首页 > 其他分享 >21. 合并两个有序链表

21. 合并两个有序链表

时间:2024-06-07 15:23:40浏览次数:12  
标签:ListNode 21 Val list1 Next 链表 tail 有序 list2

package main

import "fmt"

type ListNode struct {
	Val  int
	Next *ListNode
}

// 创建链表
func createList(nums []int) *ListNode {
	head := &ListNode{}
	tail := head
	for i := 0; i < len(nums); i++ {
		node := &ListNode{Val: nums[i]}
		tail.Next = node
		tail = node
	}
	return head.Next
}

// 打印链表
func printList(head *ListNode) {
	for p := head.Next; p != nil; p = p.Next {
		fmt.Printf("%d ", p.Val)
	}
	fmt.Println()
}

func mergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode {
	newList := &ListNode{}
	tail := newList
	for list1 != nil && list2 != nil {
		if list1.Val < list2.Val {
			tail.Next = list1
			tail = list1
			list1 = list1.Next
		} else {
			tail.Next = list2
			tail = list2
			list2 = list2.Next
		}
	}
	if list1 != nil {
		tail.Next = list1
	} else {
		tail.Next = list2
	}
	return newList.Next
}

func main() {
	list1 := createList([]int{0, 2, 4})
	list2 := createList([]int{1, 5, 6})
	list := mergeTwoLists(list1, list2)
	printList(list)
}

标签:ListNode,21,Val,list1,Next,链表,tail,有序,list2
From: https://www.cnblogs.com/gdut17code/p/18237259

相关文章

  • 206. 反转链表
    packagemainimport"fmt"typeListNodestruct{ Valint Next*ListNode}funcreverseList(head*ListNode)*ListNode{ varpre*ListNode//前驱节点指针 cur:=head//当前节点指针 forcur!=nil{ next:=cur.Next//临时存储next指针 cur.N......
  • 视频大模型 Vidu 支持音视频合成;字节跳动推出语音生成模型 Seed-TTS 丨 RTE 开发者日
      开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观点,......
  • 0521 片段阅读(结构划分)
    1.片段分为说理类(主旨、意在说明、意图强调)、科普介绍类(主要讲了、介绍了、最合适的概括)、新闻类(二者均有)2.说理类要选带作者主观意见的选项、科目类选不带主观项、选客观,新闻类的文章选项要带新3.做题顺序=》1.先看问法(分辨题型和文段可能类型)=》2.再读文段(分析结构和预设打......
  • leetcode19删除链表的倒数第 N 个结点
    本文主要讲解删除链表倒数第n个节点的要点与细节c++与java代码如下,末尾本题之前可以尝试leetcode203移除链表元素具体要点:1.首先,单看移除链表节点,核心操作是:cur->next=cur->next->next 即,当前节点cur的下一个节点指向原本的下下个节点小细节:操作时,我们需要得到要......
  • leetcode160相交链表
    本文主要讲解相交链表的要点与细节c++及java代码如下,末尾1.两个链表相交的条件是,两个节点的指针相同,而不是元素值相同,即if(a==b)returna; 2.·既然要找到相交的点,那么相交之后,两个链表就完全一样了(后续长度和数值),那么我们就要不断同步更新headA和headB的临时指针,直到......
  • 每日AIGC最新进展(21):清华大学提出从人体运动和视频中理解人类行为MotionLLM、武汉大
    DiffusionModels专栏文章汇总:入门与实战MotionLLM:UnderstandingHumanBehaviorsfromHumanMotionsandVideos本研究提出了一种名为MotionLLM的新型框架,旨在通过结合视频和运动序列(如SMPL序列)的多模态数据,利用大型语言模型(LLMs)的能力来理解人类行为。与以往只针对视......
  • 【C++进阶】深入STL之list:高效双向链表的使用技巧
    ......
  • CSP历年复赛题-P2119 [NOIP2016 普及组] 魔法阵
    原题链接:https://www.luogu.com.cn/problem/P2119题意解读:在一组数里找出所有的Xa,Xb,Xc,Xd的组合,使得满足Xa<Xb<Xc<Xd,Xb-Xa=2(Xd-Xc),Xb-Xa<(Xc-Xb)/3,并统计出每个数作为A,B,C,D出现的次数。解题思路:1、枚举(O(n^4))首先想到的是通过4重循环枚举所有可能的Xa,Xb,Xc,Xd,然后判......
  • 一加七Pro刷Lineageos21(kernelsu+MicroG)
    前言前几天我已经刷了Lineageos21(一加七Pro刷lineageos21(kernelsu+gapps)),但是体验下来有两个很严重的bug:无法接打电话,没有声音。收短信倒是很正常,但电话打进来只会显示号码,不会显示接听界面(对方那边显示正在通话中,也就是挂断了),拨打电话会显示已结束。测试发现是刷了kernel......
  • 代码随想录算法训练营 第三天 链表 Leetcode203 移除链表元素 Leetcode707 设计链表 L
    Leetcode203移除链表元素 题目链接注意为了使后续节点方式统一 要人为设置链表头节点链表的处理一定要明白如何找前置节点/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(){}*L......