欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

leetcode 链表技巧总结

程序员文章站 2024-01-29 14:16:58
...

**

1、 链表的逆转

**
1->2->3->4 4->3->2->1

public ListNode reverseList(ListNode head){
        if(head==null||head.next==null) return head;
        ListNode newHead=reverseList(head.next);
        head.next.next=head;
        head.next=null;
        return newHead;
    }

采用递归一把梭穿到最后找到逆转后的头节点,然后从后往前挨个儿逆转,即后边节点指向前边节点,前边节点接着null,顺序往前,直到完成整个逆转过程

2、快慢指针定中点

 ListNode slow=head;
 ListNode fast=head;
 while(fast.next!=null&&fast.next.next!=null){
         slow=slow.next;
         fast=fast.next.next;
 }

如果链表节点个数是奇数,slow最后位置就是中点
如果链表节点个数是偶数,slow最后位置就是中间两个节点中较小的那个
所以如果拆分链表,记得slow.next=null

上一篇: 上传文件到百度网盘

下一篇: