21. Merge Two Sorted Lists

原题链接:https://leetcode.com/problems/merge-two-sorted-lists/description/
这道题目是合并两个有序的单链表。。。尼玛,这不就是《数据结构(C语言版)》上的原题嘛,并不是考察什么高超的算法,就是普通的链表操作知识而已!

import java.util.Stack;

/**
 * Created by clearbug on 2018/2/26.
 */
public class Solution {

    static class ListNode {
        int val;
        ListNode next;
        ListNode(int x) {
            val = x;
        }
    }

    public static void main(String[] args) {
        Solution s = new Solution();

        ListNode l1 = new ListNode(1);
        l1.next = new ListNode(3);
        l1.next.next = new ListNode(5);
        l1.next.next.next = new ListNode(8);

        ListNode l2 = new ListNode(1);
        l2.next = new ListNode(2);
        l2.next.next = new ListNode(3);
        l2.next.next.next = new ListNode(6);

        ListNode res = s.mergeTwoLists(l1, l2);
        System.out.println(res);
    }

    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        if (l1 == null) {
            return l2;
        }
        if (l2 == null) {
            return l1;
        }

        ListNode root = new ListNode(0);
        ListNode temp = root;

        ListNode m = l1;
        ListNode n = l2;

        while (m != null && n != null) {
            if (m.val > n.val) {
                temp.next = n;
                n = n.next;

            } else {
                temp.next = m;
                m = m.next;
            }
            temp = temp.next;
        }

        if (m != null) { // so n is null
            temp.next = m;
        }
        if (n != null) { // so m is null
            temp.next = n;
        }

        return root.next;
    }

}
posted @ 2018-03-10 16:48  optor  阅读(103)  评论(0编辑  收藏  举报