LeetCode刷题之合并两个链表(源代码➕讲解)

简介: LeetCode刷题之合并两个链表(源代码➕讲解)

 题目链接🔗放在这里了力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

1. 题目分析


  先读题,分清楚题中给的信息,我们做题一定要看末尾给的变量范围,学会自己整理:


1. 两个链表分别为list1和list2,list1长度是(≥3)list2长度是(≥1);就说明都不为空,可以不用专门判断为空的时候。


2. a和b是下标的位置,下标是从0开始的。(1≤a≤b≤list1.length-1)


3. 要删除的位置合起来是个链表,所以是要删除以a位置为头节点,b位置为尾结点的子链表。


4. 删除之后将list1被删除的位置和list2链接起来。


5. 这里挺好的,没有什么临界的,如果想做临界的,可以试试a可以为0,试a可以为0,list2可以为空。

2. 源代码(内含解释)

struct ListNode* mergeInBetween(struct ListNode* list1, int a, int b, struct ListNode* list2)
{
    struct ListNode* cura = list1;//遍历到a位置前一个节点处
    struct ListNode* curb = list1;//遍历到b位置后一个节点处
    struct ListNode* cur = list2;//遍历到list2尾结点
    int A = a;
    int B = b;
    //用cura_0来记录要删除的子链表的头节点的前驱节点
    while(--A)
    {
        cura = cura->next;
    }
    //找到list2的尾结点
    while(cur->next)
    {
        cur = cur->next;
    }
    //在这里b++的原因是要找到要删除的子链表的尾结点的后继节点
    B++;
    while(B--)
    {
        curb = curb->next;
    }
    cura->next = list2;
    cur->next = curb;
    return list1;
}


相关文章
|
23天前
【力扣】-- 移除链表元素
【力扣】-- 移除链表元素
31 1
|
29天前
Leetcode第21题(合并两个有序链表)
这篇文章介绍了如何使用非递归和递归方法解决LeetCode第21题,即合并两个有序链表的问题。
46 0
Leetcode第21题(合并两个有序链表)
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
280页PDF,全方位评估OpenAI o1,Leetcode刷题准确率竟这么高
【10月更文挑战第24天】近年来,OpenAI的o1模型在大型语言模型(LLMs)中脱颖而出,展现出卓越的推理能力和知识整合能力。基于Transformer架构,o1模型采用了链式思维和强化学习等先进技术,显著提升了其在编程竞赛、医学影像报告生成、数学问题解决、自然语言推理和芯片设计等领域的表现。本文将全面评估o1模型的性能及其对AI研究和应用的潜在影响。
10 1
|
29天前
LeetCode第二十四题(两两交换链表中的节点)
这篇文章介绍了LeetCode第24题的解法,即如何通过使用三个指针(preNode, curNode, curNextNode)来两两交换链表中的节点,并提供了详细的代码实现。
15 0
LeetCode第二十四题(两两交换链表中的节点)
|
29天前
Leetcode第十九题(删除链表的倒数第N个节点)
LeetCode第19题要求删除链表的倒数第N个节点,可以通过快慢指针法在一次遍历中实现。
38 0
Leetcode第十九题(删除链表的倒数第N个节点)
|
29天前
|
索引
力扣(LeetCode)数据结构练习题(3)------链表
力扣(LeetCode)数据结构练习题(3)------链表
72 0
|
30天前
【LeetCode 10】142. 环形链表 II
【LeetCode 10】142. 环形链表 II
19 0
|
29天前
【LeetCode 09】19 删除链表的倒数第 N 个结点
【LeetCode 09】19 删除链表的倒数第 N 个结点
14 0
|
29天前
【LeetCode 08】206 反转链表
【LeetCode 08】206 反转链表
12 0
|
30天前
【LeetCode 06】203.移除链表元素
【LeetCode 06】203.移除链表元素
28 0