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

      

  • 相关阅读:
    ASP.NET常用的三十三种代码
    asp.net获取IP地址
    Inside Microsoft Sql Server 2005 TSQL Programming 学习笔记
    动态SQL与SQL注入(一)动态SQL
    (二)SQL 注入
    WCF 安全
    C# 运算符重载和 implicit关键字
    分页那回事
    thinking
    Moss css
  • 原文地址:https://www.cnblogs.com/SkyeAngel/p/9284991.html
Copyright © 2011-2022 走看看