23. 合并 K 个升序链表 --力扣 --JAVA

题目

给你一个链表数组,每个链表都已经按升序排列。

请你将所有链表合并到一个升序链表中,返回合并后的链表。

解题思路

  1. 对每个链表的首节点进行比较,获取当前的最小节点;
  2. 将每个阶段的最小节点进行链接;

代码展示

class Solution {
    public ListNode mergeKLists(ListNode[] lists) {
        ListNode head = null;
        ListNode result = null;
        int count = 0;
        while (count < lists.length){
            count = 0;
            //获取首节点
            if(head == null){
                int min = Integer.MAX_VALUE;
                int index = 0;
                for (int i = 0; i < lists.length; i++){
                    if(lists[i] == null){
                        count++;
                        continue;
                    }
                    int temp = lists[i].val;
                    if(temp < min){
                        min = temp;
                        head = lists[i];
                        index = i;
                    }
                }
                if(lists[index] != null) {
                    lists[index] = lists[index].next;
                }
                result = head;
            } else {
                int min = Integer.MAX_VALUE;
                int index = 0;
                for (int i = 0; i < lists.length; i++){
                    if(lists[i] == null){
                        count++;
                        continue;
                    }
                    int temp = lists[i].val;
                    if(temp < min){
                        min = temp;
                        result.next = lists[i];
                        index = i;
                    }
                }
                if(lists[index] != null) {
                    lists[index] = lists[index].next;
                }
                result = result.next;
            }
        }
        return head;
    }
}

你可能感兴趣的:(力扣练习,算法,数据结构)