首页 > 其他分享 >合并K个升序链表-力扣

合并K个升序链表-力扣

时间:2024-08-17 14:26:57浏览次数:14  
标签:力扣 ListNode val int nullptr lists next 链表 升序

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* mergeKLists(vector<ListNode*>& lists) {
        ListNode* dummyhead = new ListNode(0);
        ListNode* prev = dummyhead;
        int len = 0;
        for(auto list : lists){
            ListNode* head = list;
            while(head != nullptr){
                head = head->next;
                len++;
            }
        }
        while(len--){
            ListNode* min = nullptr;
            int k = -1;
            for(int i = 0; i < lists.size(); i++){
                if(min == nullptr && lists[i] != nullptr) {
                    min = lists[i];
                    k = i;
                }
                if(lists[i] != nullptr && lists[i]->val < min->val) {
                    min = lists[i];
                    k = i;
                }
            }
            prev->next = min;
            prev = prev->next;
            lists[k] = lists[k]->next;
        }
        return dummyhead->next;
    }
};

标签:力扣,ListNode,val,int,nullptr,lists,next,链表,升序
From: https://blog.csdn.net/why_12134/article/details/141224519

相关文章

  • 链表多选题(1)链表
    描述在一个链表中,已知p是指向结点c的指针变量,q是指向结点d的指针变量,s是指向结点h的指针变量,若在p和q之间插入结点s,则执行() 输入描述无输出描述如果选择A选项,输出按照下面方法输出:示例#include<iostream>usingnamespacestd;intmain(){cout<<"AB";......
  • 【408DS算法题】016基础-倒序输出单链表的结点值
    Index题目分析实现总结题目给定单链表的头结点,倒序输出单链表的结点值。分析实现要倒序输出链表结点值,首先可以想到的是先将链表的结点值存储到数组中,然后利用数组随机访问的特性进行倒序输出。如果考虑其它思路的话,还可以使用栈来代替数组——将链表元素依次......
  • 链表中环的检测与入口节点的查找:哈希表与快慢指针方法
    前言在数据结构中,链表是一种常见的线性数据结构。链表中的环问题是面试和实际编程中经常遇到的一个问题。本文将先复习哈希表的基本概念,然后介绍两种检测链表中环的方法:哈希表法和快慢指针法,并分析它们的优缺点、原理以及时间和空间复杂度。哈希表复习定义:哈希表,又称散列表,......
  • 力扣面试经典算法150题:找出字符串中第一个匹配项的下标
    找出字符串中第一个匹配项的下标今天的题目是力扣面试经典150题中的数组的简单题:找出字符串中第一个匹配项的下标题目链接:https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/description/?envType=study-plan-v2&envId=top-interview-......
  • Python合并两个有序链表
    题目合并两个有序链表,如l1=[1,3,4],l2=[1,2,4,5],合并后l3=[1,1,2,3,4,4,5]解决思路需要构建节点Node和链表LinkedList结构如果root节点不确定,可以创建一个哑节点Node(0),作为root节点的前节点,也是初始节点(当前节点)循环当l1当前节点不为None并且l2当前节点不为None时,那个节......
  • 随想录day3:203.移除链表元素|707.设计链表 |206.反转链表
    203.移除链表元素方法一:直接遍历,永远记得处理head,删除链表必须有前驱。/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(){}*ListNode(intval){this.val=val;}*ListNode......
  • 11. 盛最多水的容器【 力扣(LeetCode) 】
    一、题目描述给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i,0)和(i,height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。二、测试用例示例1:输入:[1,......
  • 15. 三数之和【 力扣(LeetCode) 】
    一、题目描述给你一个整数数组nums,判断是否存在三元组[nums[i],nums[j],nums[k]]满足i!=j、i!=k且j!=k,同时还满足nums[i]+nums[j]+nums[k]==0。请你返回所有和为0且不重复的三元组。注意:答案中不可以包含重复的三元组。二、测试用例示例1:输......
  • 【代码随想录】二、链表:2、设计链表
    部分图文参考于:代码随想录-707.设计链表。这道题目设计链表的五个接口:●获取链表第index个节点的数值●在链表的最前面插入一个节点●在链表的最后面插入一个节点●在链表第index个节点前面插入一个节点●删除链表的第index个节点可以说这五个接口,已经覆盖了链表的......
  • 【代码随想录】二、链表:1、移除链表元素
    部分图文参考于:代码随想录-203.移除链表元素。C++编程中记得要手动释放结点内存。链表操作中,可以使用原链表来直接进行删除操作,也可以设置一个虚拟头结点再进行删除操作。1.题目链接203.移除链表元素2.思路以链表1424来举例,移除元素4。如果使用C,C++编程语言的话,......