面试题17. 合并两个排序的链表

来源:互联网 发布:随机抽号软件 编辑:程序博客网 时间:2024/06/07 02:40

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

思路:
设置两个指针,每一步都是谁小选谁,最后把剩余的加进去。

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) {        ListNode head = new ListNode(0);        ListNode temp = head;        // step1. 谁小选谁,直到一方全部加进链表中        while(list1 != null && list2 != null) {            if(list1.val < list2.val) {                temp.next = list1;                list1 = list1.next;            }else {                temp.next = list2;                list2 = list2.next;            }            temp = temp.next;        }        // step2. 把剩余的节点加入到链表中        while(list1 != null) {            temp.next = list1;            list1 = list1.next;            temp = temp.next;        }        while(list2 != null) {            temp.next = list2;            list2 = list2.next;            temp = temp.next;        }        return head.next;    }}
原创粉丝点击