【力扣刷题练习】23. 合并 K 个升序链表

题目描述:

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

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

题目解答:

class Solution {
   
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
   
        if (list1 == null || list2 == null)
            return list1 == null ? list2 : list1;
        if (list1.val < list2.val) {
   
            list1.next = mergeTwoLists(list1.next, list2);
            return list1;
        } else {
   
            list2.next = mergeTwoLists(list1, list2.next);
            return list2;
        }
    }

    public ListNode mergeKLists(ListNode[] lists) {
   
        int len = lists.length;
        if (len == 0)
            return null;
        while (len > 1) {
   
            for (int i = 0; i < len / 2; i++)
                lists[i] = mergeTwoLists(lists[i], lists[len - 1 - i]);
            len = (len + 1) / 2;
        }
        return lists[0];
    }
}

题目思路:

本题的思路可以袭承自【力扣刷题练习】21. 合并两个有序链表中的递归解法
将C++的合并处理

public:
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
   
        if(list1==nullptr||list2==nullptr)
            return list1==nullptr?list2:list1;
        if(list1->val<list2->val){
   
            list1->next=mergeTwoLists(list1->next,list2);
            return list1;
        }
        else{
   
            list2->next=mergeTwoLists(list1,list2->next);
            return list2;
        }
    }

转换为Java下的合并操作

public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
   
        if (list1 == null || list2 == null)
            return list1 == null ? list2 : list1;
        if (list1.val < list2.val) {
   
            list1.next = mergeTwoLists(list1.next, list2);
            return list1;
        } else {
   
            list2.next = mergeTwoLists(list1, list2.next);
            return list2;
        }
    }

接下来在主函数中设计实现将该list组两两合并,直到不能再合并为止则认为合并链表完成,最后返回首位的链表数组元素。

相关推荐

  1. 练习23. 合并 K 升序

    2024-01-31 12:00:03       68 阅读
  2. 23. 合并 K 升序 - (LeetCode)

    2024-01-31 12:00:03       40 阅读
  3. 23. 合并k升序

    2024-01-31 12:00:03       30 阅读
  4. 合并k升序

    2024-01-31 12:00:03       28 阅读
  5. LeetCode-23. 合并 K 升序

    2024-01-31 12:00:03       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-31 12:00:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-31 12:00:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-31 12:00:03       82 阅读
  4. Python语言-面向对象

    2024-01-31 12:00:03       91 阅读

热门阅读

  1. Android 12.0 监听手机飞行模式

    2024-01-31 12:00:03       52 阅读
  2. vue3源码(四)watch

    2024-01-31 12:00:03       47 阅读
  3. raft实现心得-核心设计

    2024-01-31 12:00:03       55 阅读
  4. mapper xml中 <和>的写法

    2024-01-31 12:00:03       53 阅读
  5. 瑞芯微1808模型转换(onnx到rknn)环境配置过程

    2024-01-31 12:00:03       63 阅读
  6. ES客户端接入方式

    2024-01-31 12:00:03       43 阅读
  7. 2024.1.22 parse_rule.用户画像es数据使用rule规则读取

    2024-01-31 12:00:03       45 阅读
  8. wrappedComponentRef和ref的区别

    2024-01-31 12:00:03       51 阅读
  9. 通过MediaStore查询image,video,arm,pdf等等文件数据

    2024-01-31 12:00:03       49 阅读