Merge k Sorted Lists

来源:互联网 发布:知乎 唯一视觉怎么样 编辑:程序博客网 时间:2024/05/01 08:04

基本功中的基本功。

所以还忘了最开始的错误检测!!!!!!

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public ListNode mergeKLists(ListNode[] lists) {        ///////////        if (lists == null || lists.length == 0) {            return null;        }        ///////////        return mergeKListsHelper(lists, 0, lists.length - 1);    }        private ListNode mergeKListsHelper(ListNode[] lists, int start, int end) {        if (start == end) {            return lists[start];        }        int mid = start + (end - start) / 2;        ListNode left = mergeKListsHelper(lists, start, mid);        ListNode right = mergeKListsHelper(lists, mid + 1, end);                return mergeTwoLists(left, right);    }        private ListNode mergeTwoLists(ListNode left, ListNode right) {        ListNode dummy = new ListNode(0);        ListNode node = dummy;        while (left != null && right != null) {            if (left.val <= right.val) {                node.next = left;                left = left.next;            } else {                node.next = right;                right = right.next;            }            node = node.next;        }        if (left != null) {            node.next = left;        } else if (right != null) {            node.next = right;        }        return dummy.next;    }}


0 0
原创粉丝点击