首页 > 其他分享 >链表双指针技巧汇总 [labuladong-刷题打卡 day1]

链表双指针技巧汇总 [labuladong-刷题打卡 day1]

时间:2023-08-01 11:11:06浏览次数:45  
标签:ListNode val temp next 链表 打卡 day1 指针

双指针合并

21. 合并两个有序链表
比较简单的双指针比较算法,两个指针分别指向待合并链表/序列,比较后选择符合条件的指针移动
Trick:链表在实现时,带头节点的链表在操作中更方便
题解

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
        ListNode *head= new ListNode();
        ListNode *p=list1,*q=list2,*temp=head;
        while(p&&q){
            if(p->val>=q->val){
                temp->next=q;
                q=q->next;
            }else{
                temp->next=p;
                p=p->next;
            }
            temp=temp->next;
            
        }

        if(p) temp->next=p;
        else temp->next=q;

        return head->next;
    }
};

标签:ListNode,val,temp,next,链表,打卡,day1,指针
From: https://www.cnblogs.com/alanjiang/p/17595950.html

相关文章

  • 7.31打卡
    L1-077大笨钟的心情#include<bits/stdc++.h>usingnamespacestd;intmain(){inta[24];for(inti=0;i<24;i++){cin>>a[i];}intn;for(;;){cin>>n;if(n<0||n>23){break;}el......
  • 数据结构与算法(三):单向链表
    链表定义链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑是通过链表种的指针链接次序实现的。链表由一系列节点组成,每个节点包括两部分:一个是存储数据元素的数据域,一个是存储下一个节点地址的指针域。单向链表从头节点(也可以没有头节点)开始,指针指向下一个节点的......
  • day19
    一、验证码1.打开后得到一堆jpg,根据名字猜测是将所有jpg上的数字获取下来,然后进行某种运算,网上找一下python识别验证码的脚本,但是我的这个识别出来有问题,有一位是d,但应该是0点击查看代码importddddocrtmp=''ocr=ddddocr.DdddOcr()f1=open('1.txt','wb')foriinr......
  • 反转单向链表 | 空间复杂度O(1)
    反转单向链表时间复杂度:O(N)空间复杂度:O(1)voidreverse_list(node**head_ptr){ node*prev=NULL; node*curr=*head_ptr; node*next=NULL; while(curr!=NULL){ /*INSERTCODEHERE*/ next=curr->next; curr->next=prev; prev=curr; ......
  • 143. 重排链表
    143.重排链表  给定一个单链表L的头节点head,单链表L表示为:请将其重新排列后变为:不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例1:输入:head=[1,2,3,4]输出:[1,4,2,3]示例2:输入:head=[1,2,3,4,5]输出:[1,5,2,4,3] 提示:链......
  • 代码随想录第四天|力扣24.两两交换链表节点、力扣19.删除链表的倒数第N个结点、力扣面
    两两交换链表中的节点(力扣24.)dummyhead.next=head;cur=dummyhead;while(cur.next!=null&&cur.next.next!=null)temp=cur.next;temp1=cur.next.next.next;cur.next=cur.next.next;cur.next.next=temp;temp.next=temp1;cur=cur.next.next;returndummyhead.n......
  • 7.30打卡
    L1-064估值一亿的AI核心代码#include<bits/stdc++.h>usingnamespacestd;boolIf(charop)//判断op是否为符号{if(op=='0')returnfalse;if(op>='a'&&op<='z')returnfalse;if(op>=......
  • 【ACM专项练习#02】整行字符串、输入vector、打印图形、处理n组数据以及链表操作等
    输入整行字符串平均绩点题目描述每门课的成绩分为A、B、C、D、F五个等级,为了计算平均绩点,规定A、B、C、D、F分别代表4分、3分、2分、1分、0分。输入有多组测试样例。每组输入数据占一行,由一个或多个大写字母组成,字母之间由空格分隔。输出每组输出结果占一行。如果输入的大......
  • 代码随想录算法训练营第四天| LeetCode 24. 两两交换链表中的节点 19.删除链表的倒
    24.两两交换链表中的节点     卡哥建议:用虚拟头结点,这样会方便很多。 本题链表操作就比较复杂了,建议大家先看视频,视频里我讲解了注意事项,为什么需要temp保存临时节点。   题目链接/文章讲解/视频讲解:https://programmercarl.com/0024.%E4%B8%A4%E4%B8%A4%E4%BA%......
  • 力扣---142. 环形链表 II
    给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从0开始)。如果......