zoukankan      html  css  js  c++  java
  • 。。。剑指Offer之——合并两个排序的链表。。。

     1 public ListNode Merge(ListNode list1, ListNode list2) {
     2 //        list1,list2中,只要有一个是空的,则返回另外一个链表
     3         if (list1 == null) {
     4             return list2;
     5         }
     6         if (list2 == null) {
     7             return list1;
     8         }
     9 //        新建一个链表
    10         ListNode k = new ListNode(Integer.MIN_VALUE);
    11 //        新建一个头指针,指向新建的链表
    12         ListNode head = k;//k其实是用来迭代合并之后的链表
    13 //        p指针用来迭代list1,q指针用来迭代list2
    14         ListNode p = list1, q = list2;
    15         while (p != null && q != null) {
    16 //            哪一个值小,k就指向谁
    17             if (p.val > q.val) {
    18                 k.next = q;
    19                 k = q;
    20                 q = q.next;//往后移动
    21             } else {
    22                 k.next = p;
    23                 k = p;
    24                 p = p.next;//往后移动
    25             }
    26         }
    27 //        最终如果q提前结束(q==null),p不为空,则直接把p挂到k的后面
    28         if (p != null) {
    29             k.next = p;
    30         }
    31 //        最终如果q提前结束(p==null),q不为空,则直接把q挂到k的后面
    32         if (q != null) {
    33             k.next = q;
    34         }
    35 //        真正的头节点是原来新建k节点的下一个节点,因为k是新建的节点,
    36 //        合并之后,k节点其实不属于最终合并之后的链表
    37         return head.next;
    38     }
  • 相关阅读:
    父组件和子组件之间的生命周期执行顺序
    Vue生命周期四个阶段
    Vue watch监听
    Vue computed计算属性 理解
    Vue中v-if 与 v-show的区别
    虚拟DOM
    MVC与MVVM原理
    单例模式 回流与重绘
    判断某个对象属于哪种数据类型
    原生JS的兼容性问题
  • 原文地址:https://www.cnblogs.com/yingmeng/p/10777971.html
Copyright © 2011-2022 走看看