力扣题型总汇——链表

链表总结:

1.删除、添加结点一定要在头指针前面在创建一个空节点。因为有可能要删除的是头指针

ListNode res=new ListNode();

res.next=head;

//但是遍历链表的时候还是用
ListNode temp=head;
while(temp!=null)

2.结点右移和结点的边移动是有区别的

//结点移动
cur=cur.next

//结点的边 -> 移动 
cur.next=cur.next.next;

3.链表要使用指针的话一般都是快慢指针,除个别题目的相关性质:如回文链表  回文的特性就是要用左右指针如——【力扣234回文链表】【银联01:回文链表】

①快慢指针再同个位置,同时出发,快指针走2步,慢指针走1步。在while循环的条件是(fast!=null&&fast.next!=null)————【力扣141环形链表】

②快慢指针再同一位置,快指针走x步后,快慢指针再同时走,走的速度都是一样的,每次都1步。在while循环的条件是(fast.next!=null)————【力扣19删除倒数N个结点】

4.把B链表的所有结点直接接在A链表的后面————【力扣86分割链表】

cur.next=dummy.next;//直接把辅助链表的结点的值赋给cur.next,这一句话等同于下面的操作 

/*

//因为node结点的位置已经是链表末尾了,所以要把辅助链表再次利用的话,必须要node=dummy 或者直接使用dummy来(反正也只是辅助链表)
        //必须注意我们定义的辅助链表第一个是空节点,不放任何值,所以要把链表的dummy.next.val添加才行
        while(dummy.next!=null){
            cur.next=new ListNode(dummy.next.val);
            cur=cur.next;
            dummy=dummy.next;
        }

*/

5.如果创建一个新的结点dummy,用来当做新链表的无任何信息的头结点,新的结点后面没有任何一个结点,那么要创建dummy的下一个结点。操作如下————【力扣86分割链表】

ListNode ans=new ListNode();
ListNode cur=ans;
cur.next=new ListNode(temp.val);//这里添加的temp.val值根据题意而定
cur=cur.next;//结点后移


题目:

Day1:21合并两个有序链表

Day4: 83删除排序链表中的重复元素

Day11:141环形链表

Day11:160相交链表

Day14:203移除链表元素

Day15:206反转链表

Day17:234回文链表

Day17:237删除链表中的节点

Day37:2181合并零之间的节点

Day42:2两数相加

Day47:19删除链表的倒数第 N 个结点

Day48:82删除排序链表中的重复元素 II

Day49:86分隔链表

Day49:148排序链表

Day50:61旋转链表

Day51:142环形链表 II

Day55:银联01回文链表(超级重要)

92. 反转链表 II(背起来)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值