zoukankan      html  css  js  c++  java
  • 链表专题

    记录一下《剑指offer》上关于链表的题目

    1.  在O(1)时间内删除链表的节点  #13
    2. 链表中倒数第k个节点  #15
    3. 翻转链表    #16
    4. 合并2个排序链表  #17
    5. 复杂链表的复制  # 26
    6. BST与双向链表  # 27
    7. 两个链表的第一个公共节点 # 37

    __________________________________

    3. 翻转链表:

       需要三个指针,一个 prevcurrent ext, 总共分为3步

       首先,需要保存next_temp, if next == null ,即说明到达尾节点了,该尾节点就是翻转链表后的头节点。

       然后 设置 cur.next = prev;

       然后,向后移动 prev = cur; cur = next_temp(事先保存的下一个节点)

       代码:

     public ListNode reverseList(ListNode head) {
            if(head == null) return null;
            ListNode cur = head;
            ListNode prev = null;
            ListNode reverseHead = null;
            while(cur != null){
                ListNode next_temp = cur.next;
                if(next_temp == null){
                    reverseHead = cur;
                }
                cur.next = prev;
                prev = cur;
                cur = next_temp;
            }
            return reverseHead;
        }
    

      测试用例:

    • 输入的链表头指针为空。
    • 输入的链表只有一个节点。
    • 输入的链表有多个节点。

     ____________________________

    4. 合并两个排序链表

    如果一个链表为空,返回另一个即可。(这个操作,可以有效解决两个空链表的情况)

     然后,在确定合并之后链表的头节点,即两个两个头节点中较小的那一个。

    之后就可以用递归的方式了,递归基 为红色情况。如此即可。

    代码:红色的操作很漂亮,代码简洁

     public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
            if(l1 == null) return l2;
            else if(l2 == null) return l1;
            ListNode head;
            if(l1.val < l2.val){
                head = l1;
                head.next = mergeTwoLists(l1.next,l2);
            }else{
                head = l2;
                head.next = mergeTwoLists(l1,l2.next);
            }
            return head;
        }
    

      

    特例

    • 功能测试:输入的两个链表有多个节点;节点的值互不相同,或者存在值相等的多个节点。
    • 特殊测试:两个链表中一个或者两个的链表头为空;两个链表中只有一个节点。
  • 相关阅读:
    第十七节--Hystrix服务熔断
    第十六节--Hystrix之服务降级全局配置
    第十五节--Hystrix之服务降级
    第十四节--Hystrix断路器
    第十三节--OpenFeign服务接口调用
    第十二节--Ribbon
    第十一节--三个注册中心对比
    uni-app开发小说阅读器
    H5+微信朋友、朋友圈分享
    uni-app开发音乐电子书库
  • 原文地址:https://www.cnblogs.com/vector11248/p/10503145.html
Copyright © 2011-2022 走看看