zoukankan      html  css  js  c++  java
  • [leetcode] 23. 合并K个排序链表

    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;
        }
    }
    
  • 相关阅读:
    (2).net体系
    (1)php开篇常识
    java基础知识-xx
    java基础知识-字符串与数组
    java基础知识-流程控制
    小明的喷漆计划
    加分二叉树
    括号序列
    P1045
    胖男孩
  • 原文地址:https://www.cnblogs.com/acbingo/p/9251717.html
Copyright © 2011-2022 走看看