剑指offer-合并两个有序链表

2019-09-29  本文已影响0人  纳萨利克

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

思路
比较list1与list2的值:
当list1.val <= list2.val时,将list1的值放入cur的下一个,否则list2
重复上述操作,直到有一个链表为空
判断是哪个链表空了,如果是list1,则将剩下的list2结点直接连到list1尾部,返回头结点即可,list2相同。

Java

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
  public ListNode Merge(ListNode list1,ListNode list2) {
    if (list1 == null) return list2;
    if (list2 == null) return list1;

    ListNode res = new ListNode(-1);
    ListNode cur = res;
    while (list1 != null && list2 != null) {
      if (list1.val <= list2.val) {
        cur.next = list1;
        list1 = list1.next;
      } else {
        cur.next = list2;
        list2 = list2.next;
      }
      cur = cur.next;
    }
    if (list1 != null) cur.next = list1;    
    if (list2 != null) cur.next = list2;
    return res.next;
  }
}
上一篇 下一篇

猜你喜欢

热点阅读