[Leetcode] 0023. k 個のソートされたリストを結合する

Python、C++、JavaScript、SQL、TypeScript の多様な LeetCode ソリューションを探索してください。面接の準備、学習、複数のプログラミング言語でのコードの練習に最適です。 Github リポジトリ リンク


You are given an array of k linked-lists リスト, each linked-list is sorted in ascending order.

すべてのリンク リストを 1 つの並べ替えられたリンク リストにマージし、それを返します。

 

例 1:

入力: lists = [[1,4,5],[1,3,4],[2,6]]
出力: [1,1,2,3,4,4,5,6]
説明: The linked-lists are:
[
  1->4->5,
  1->3->4,
  2->6
]
merging them into one sorted list:
1->1->2->3->4->4->5->6

例 2:

入力: lists = []
出力: []

例 3:

入力: lists = [[]]
出力: []

 

制約:

  • k == lists.length
  • 0 <= k <= 104
  • 0 <= lists[i].length <= 500
  • -104 <= lists[i][j] <= 104
  • lists[i] is sorted in ascending order.
  • The sum of lists[i].length will not exceed 104.

パイソン

				
					# Definition for singly-linked list.
from typing import List, Optional


class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next


class Solution:
    def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:
        nodes = []
        head = point = ListNode(0)
        for left in lists:
            while left:
                nodes.append(left.val)
                left = left.next
        for x in sorted(nodes):
            point.next = ListNode(x)
            point = point.next
        return head.next
				
			
ja日本語