21.Merge Two Sorted Lists 、23. Merge k Sorted Lists
21.Merge Two Sorted Lists
初始化一个指针作为开头,然后返回这个指针的next
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode* dummy = new ListNode(-);
ListNode* p = dummy;
while(l1 && l2){
if(l1->val <= l2->val){
p->next = l1;
p = p->next;
l1 = l1->next;
}
else{
p->next = l2;
p = p->next;
l2 = l2->next;
}
}
if(l1)
p->next = l1;
else
p->next = l2;
return dummy->next;
}
};
23. Merge k Sorted Lists
https://www.cnblogs.com/grandyang/p/4606710.html
这个是分治的思想
实质上就是每次合并一半的链表,且两两合并的链表按照一定间隔距离进行合并
class Solution {
public:
ListNode* mergeKLists(vector<ListNode*>& lists) {
int n = lists.size();
if(n <= )
return NULL;
while(n > ){
int k = (n + )/;
for(int i = ;i < n/;i++)
lists[i] = mergeList(lists[i],lists[i + k]);
n = k;
}
return lists[];
}
ListNode* mergeList(ListNode* l1,ListNode* l2){
if(l1 == NULL)
return l2;
if(l2 == NULL)
return l1;
ListNode* head;
if(l1->val < l2->val){
head = l1;
head->next = mergeList(l1->next,l2);
}
else{
head = l2;
head->next = mergeList(l1,l2->next);
}
return head;
}
};
自己写的:
用非递归也可以合并两个链表。
k = (n + 1)/2中k代表间隔,vector中的链表等间隔合并,这样能达到减少一半的目的。+1的目的是针对奇数这种情况,中间一定会剩下一个单独的,这个单独的也要保留在vector中。n代表当前已更新剩下的链表个数,其实也就是存放在lists中的前n个。+1的目的其实也是针对奇数个的情况。
class Solution {
public:
ListNode* mergeKLists(vector<ListNode*>& lists) {
if(lists.empty())
return NULL;
int n = lists.size();
while(n > ){
int k = (n + )/;
for(int i = ;i < n/;i++)
lists[i] = merge(lists[i],lists[i + k]);
n = (n + )/;
}
return lists[];
}
ListNode* merge(ListNode* l1,ListNode* l2){
ListNode* dummy = new ListNode(-);
ListNode* p = dummy;
while(l1 && l2){
if(l1->val < l2->val){
p->next = l1;
p = p->next;
l1 = l1->next;
}
else{
p->next = l2;
p = p->next;
l2 = l2->next;
}
}
if(l1)
p->next = l1;
else
p->next = l2;
return dummy->next;
}
};
21.Merge Two Sorted Lists 、23. Merge k Sorted Lists的更多相关文章
- 刷题23. Merge k Sorted Lists
一.题目说明 这个题目是23. Merge k Sorted Lists,归并k个有序列表生成一个列表.难度为Hard,实际上并不难,我一次提交就对了. 二.我的解答 就是k路归并,思路很简单,实现也 ...
- LeetCode 23. 合并K个排序链表(Merge Two Sorted Lists)
23. 合并K个排序链表 23. Merge k Sorted Lists 题目描述 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. LeetCode23. Merge k S ...
- [Leetcode][Python]23: Merge k Sorted Lists
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 23: Merge k Sorted Listshttps://oj.leet ...
- LeetCode LinkList 23. Merge k Sorted Lists
这两天一直也没有顾上记录一下自己做过的题目,回头看看,感觉忘的好快,今天做了一个hard,刚开始觉得挺难得,想了两种方法,一种是每次都从k个list中选取最小的一个,为空的直接跳过,再就是每次合并其中 ...
- [LeetCode] 23. Merge k Sorted Lists 合并k个有序链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. E ...
- 【LeetCode】23. Merge k Sorted Lists 合并K个升序链表
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:合并,链表,单链表,题解,leetcode, 力扣,Py ...
- 23. Merge k Sorted Lists - LeetCode
Question 23. Merge k Sorted Lists Solution 题目大意:合并链表数组(每个链表中的元素是有序的),要求合并后的链表也是有序的 思路:遍历链表数组,每次取最小节点 ...
- [leetcode 23]Merge k Sorted Lists
1 题目 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexi ...
- 23. Merge k Sorted Lists
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. = ...
随机推荐
- C#的预处理指令
- DNS zone file
zone file格式最初由Berkeley Internet Name Domain(BIND)软件包使用,但已被其他DNS server software广泛采用.它们中的一些(例如NSD,Pow ...
- 第一课 IP通信
我们的专业课:<IP通信>开课了. 在第一节课,我们初步了解了关于通信的知识,涨了知识,下面我就说一下第一节课所学所感. 在学习这门课的时候,需要我们认真预习,认真听课, ...
- solr8.2 环境搭建 配置中文分词器 ik-analyzer-solr8 详细步骤
一.下载安装Apache Solr 8.2.0 下载地址:http://lucene.apache.org/solr/downloads.html 因为是部署部署在windows系统上,所以下载zip ...
- 用js刷剑指offer(斐波那契数列)
牛客网链接 下面介绍一下什么是斐波那契数列 js代码 知道了通项公式,那代码就非常简单了 function Fibonacci(n) { // write code here let pre = 1 ...
- linux 、 CentOs ---> 环境变量设置
Linux下环境变量设置 1.在Windows 系统下,很多软件安装都需要配置环境变量,比如 安装 jdk ,如果不配置环境变量,在非软件安装的目录下运行javac 命令,将会报告找不到文件,类似的错 ...
- 甘特图、Data Editors控件新玩法—DevExpress WPF v19.2
通过DevExpress WPF Controls,你能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案. 无论是Office办公软件的衍 ...
- [React] Create a Query Parameter Modal Route with React Router
Routes are some times better served as a modal. If you have a modal (like a login modal) that needs ...
- winfrom窗体自适应
using System.Runtime.InteropServices; public class Win32 { public const Int32 AW_HOR_POSITIVE = 0x00 ...
- 一个项目中:只能存在一个 WebMvcConfigurationSupport (添加swagger坑)
问题再现: 1.添加了swagger配置,导致接口响应的中文乱码 2.于是又添加了配置解决中文乱码的配置: 问题来了,添加了CharsetConfig 配置后swagger的配置失效了,访问404,搞 ...