码迷,mamicode.com
首页 > 编程语言 > 详细

[leetcode] 23. 合并K个排序链表

时间:2018-07-02 00:15:17      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:代码   remove   i++   sts   val   nod   esc   while   move   

23. 合并K个排序链表

这个题算是考察代码功底吧,基本功,对变量与引用的理解。

不多说了,思路跟第21题基本一致,只不过从两个换成了多个

class Solution {
    public ListNode mergeKLists(ListNode[] lists) {

        List<ListNode> listNodes = new ArrayList<>(Arrays.asList(lists));

        ListNode ans = new ListNode(Integer.MAX_VALUE);
        ListNode k = ans;

        while (not_finish(listNodes)) {
            int p = choose(listNodes);
            ListNode pNode = listNodes.get(p);
            k.next = pNode;
            pNode = pNode.next;
            listNodes.remove(p);
            listNodes.add(pNode);
            k = k.next;
        }

        return ans.next;
    }

    private int choose(List<ListNode> lists) {
        int min = Integer.MAX_VALUE;
        int p = -1;
        for (int i = 0; i < lists.size(); i++) {
            if (min >= lists.get(i).val) {
                min = lists.get(i).val;
                p = i;
            }
        }
        return p;
    }

    private boolean not_finish(List<ListNode> lists) {
        for (int i = lists.size() - 1; i >= 0; i--) {
            if (lists.get(i) == null) {
                lists.remove(i);
            }
        }
        return lists.size() > 0;
    }
}

[leetcode] 23. 合并K个排序链表

标签:代码   remove   i++   sts   val   nod   esc   while   move   

原文地址:https://www.cnblogs.com/acbingo/p/9251717.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!