zoukankan      html  css  js  c++  java
  • 链表刷题总结

     * class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) {
     *         val = x;
     *         next = null;
     *     }
     * }

    查找一个链表的中间节点:使用快慢指针,

    查找链表的倒数第几个结点也可以使用LeetCode--remove-nth-node-from-end-of-list,即让快指针先走k步,然后快慢指针一起走,当快指针走到头的时候,慢指针刚好走到那个位置的上一个结点。

      注意:如果用途是对链表的左右分别递归调用时,需要将中间节点的前一个结点的next = null  即需要一个pre结点(注意先要赋null初始化)

    ListNode midList(ListNode node){
            if(node == null || node.next == null) return node;
            ListNode slow = node, fast = node;
            ListNode pre = null;
            while(fast != null && fast.next != null){
                pre = slow;
                slow = slow.next;
                fast = fast.next.next;
            }
            pre.next = null;
            return slow;
        }
    

      

    反转一个链表,并返回头结点

    ListNode reverse(ListNode node){
            if(node == null || node.next == null) return node;
            ListNode pre = null;
            while(node != null){
                ListNode next = node.next;
                node.next = pre;
                pre = node;
                node = next;
            }
            return pre;
        }
    

      

     可以选择一个ListNode node = new ListNode(0)来作为前缀,到时候返回的时候直接返回node.next

      

  • 相关阅读:
    资源与锁
    资源与锁
    Leetcode-Rotate List
    Leetcode-Unique Paths II
    Leetcode-Unique Paths
    Leetcode-Minimum Path Sum
    Leetcode-Sqrt(x)
    Leetcode-Set Matrix Zeroes
    Leetcode-Search a 2D Matrix
    Leetcode-Combinations
  • 原文地址:https://www.cnblogs.com/SkyeAngel/p/9284991.html
Copyright © 2011-2022 走看看