首页 > 其他分享 >已知两个长度分别为m和n的升序链表,若将它们合并为长度为m+n的一个降序链表,则最坏情况下的时间复杂度是

已知两个长度分别为m和n的升序链表,若将它们合并为长度为m+n的一个降序链表,则最坏情况下的时间复杂度是

时间:2024-05-27 16:14:07浏览次数:23  
标签:数列 复杂度 最坏 链表 次数 升序 长度

已知两个长度分别为m和n的升序链表,若将它们合并为长度为m+n的一个降序链表,则最坏情况下的时间复杂度是()。

解析:选D
两个升序合并为降序,操作就不多说了,两数列依次比较放入,其中一个数列结束了,剩下的就不用比了,直接依次放进去。

首先明确,题目让我们求复杂度,这里显然不是讨论移动次数,因为不论什么情况,移动次数都是(M+N),不需要讨论

所以这里求的是合并过程中的比较次数

最好的情况,很容易想,就是长度较短的数列中最小的数还比另一个数列最大的数字大,如(7 8 9和 1 2 3 4 ),这种情况需要比较min(m,n)次就好了,复杂度为O(min(m,n))。

最差的情况,什么是最差情况,就是比较的次数最多。怎么算呢,要这样想,两个数列移动元素的次数一定是m+n,不可能比这个还多,那么如果每一次移动都需要比较,岂不就是最差情况?但是注意,最后一次移动是一定不需要比较的,因为剩最后一个元素的时候,必然另一个数列已经结束了,所以不用比。故最坏情况比较次数为(m+n-1) 次

给几个例子试试:1 3 5 7 9 和 2 4 6 8 10 / 1 3 5 和 2 4

那么,题目要求最坏情况复杂度,就是O(m+n-1)咯

可是选项没有,哈哈,别急,比较次数是 (m+n-1) 次,m和n的次幂都是1,所以复杂度也是一次就行了,那么到底是O(n)还是O(m)呢,肯定选最大的那个啊,因为是最坏情况,故复杂度为O(Max(m,n))

标签:数列,复杂度,最坏,链表,次数,升序,长度
From: https://www.cnblogs.com/kohler21/p/18215766

相关文章

  • 无位置编码 (NoPE) 也有长度泛化问题?首个针对NoPE的长度外推方法
    前言 无位置编码(NoPE)的Transformer已经被证明在自回归语言模型任务上和Transformer+RoPE效果相当,但是NoPE的长度泛化问题并没有改善,和RoPE一样严重。华师、复旦、上海AILab联合团队基于NoPE,在排除位置编码影响下,研究长度泛化失败的表现和原因,并首次提出适用于NoPE......
  • 【链表】Leetcode 92. 反转链表 II【中等】
    反转链表II给你单链表的头指针head和两个整数left和right,其中left<=right请你反转从位置left到位置right的链表节点,返回反转后的链表。示例1:输入:head=[1,2,3,4,5],left=2,right=4输出:[1,4,3,2,5]解题思路11、遍历链表:找到left前面的节......
  • sql server 修改表字段长度耗时问题分析
    产品报了一个bug,保存某个单据时报错,数据库错误。本地调试后发现是某个表字段长度不够导致,所以解决起来很简单,优化下长度即可,通过ALTERTABLE修改表字段长度。通常这么做无可厚非,字段不够当然是加字段了。不过随着业务量的提升,很多看似简单的问题在处理起来的时候,也许并不......
  • 链表4(法二)------7-4 sdut-C语言实验-单链表中重复元素的删除
    7-4sdut-C语言实验-单链表中重复元素的删除分数20全屏浏览切换布局作者 马新娟单位 山东理工大学按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个)。输入格式:第一行输入元素个数n(1<=n<=15);第二......
  • 链表6(法二好理解)------ 7-6 sdut-C语言实验-有序链表的归并分数 20
    7-6sdut-C语言实验-有序链表的归并分数20全屏浏览切换布局作者 马新娟单位 山东理工大学分别输入两个有序的整数序列(分别包含M和N个数据),建立两个有序的单链表,将这两个有序单链表合并成为一个大的有序单链表,并依次输出合并后的单链表数据。输入格式:第一行输入M与......
  • 单链表
    单链表是内存地址不连续排列的线性表。单链表每个结点都有两个地址,第一个位置存储数据,第二个位置存储下个结点的内存地址。classNode(object):"""单链表结点"""def__init__(self,val):#_item存储数据self.val=val#_next是下一个......
  • 【Java学习】第39节:基础数据结构(二):链表
    目录1. 链表1)概述2)单向链表3)单向链表(带哨兵)4)双向链表(带哨兵)5)环形链表(带哨兵)习题E01.反转单向链表-Leetcode206E02.根据值删除节点-Leetcode203E03.删除倒数节点-Leetcode19E04.有序链表去重-Leetcode83E05.有序链表去重-Leetcode82E06.合......
  • LeetCode/NowCoder-链表经典算法OJ练习4
    ·人的才华就如海绵的水,没有外力的挤压,它是绝对流不出来的。流出来后,海绵才能吸收新的源泉。......
  • 删除有序链表中重复的元素-II
    描述给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。例如:给出的链表为1→2→3→3→4→4→51→2→3→3→4→4→5,返回1→2→51→2→5.给出的链表为1→1→1→2→31→1→1→2→3,返回2→32→3.数据范围:链表长度0≤n≤100000≤n≤......
  • 两个单链表相加
    描述假设链表中每一个节点的值都在0-9 之间,那么链表整体就可以代表一个整数。给定两个这种链表,请生成代表两个整数相加值的结果链表。数据范围:0≤n,m≤10000000≤n,m≤1000000,链表任意值0≤val≤90≤val≤9要求:空间复杂度O(n)O(n),时间复杂度O(n)O(n)例如:链表1 ......