早教吧作业答案频道 -->数学-->
已知两个长度分别为m和n的升序链表若将它们合并为一个长度为m+n的降序链表,则最坏情况下的时间复杂度是A.O(n)B.O(mn)C.O(min(m,n))D.O(max(m,n))
题目详情
已知两个长度分别为m 和n 的升序链表
若将它们合并为一个长度为m+n 的降序链表,则
最坏情况下的时间复杂度是
A.O(n) B.O(mn) C.O(min(m,n)) D.O(max(m,n))
若将它们合并为一个长度为m+n 的降序链表,则
最坏情况下的时间复杂度是
A.O(n) B.O(mn) C.O(min(m,n)) D.O(max(m,n))
▼优质解答
答案和解析
wandersss 网友说的不对,即使改成“非降序链表”,准确答案是O(m+n)而不是O(max(m,n)),比如链表1为100~999(900个数,m=900),链表2为1~99、1000(100个数,n=100),整个比较次数为99+900=999次.
下面我说说我对这道题的理首先这道题的准确答案是O(m+n),可是选项中没有,所以只能选一个最符合准确答案的选项,即使它不一定是正确的.
假设m大于n,
如果m非常接近于n,则O(m*n)~=O(n^2)>>O(m+n)~=O(2n),所以B不正确
如果m>>n,则O(m+n)>>O(n),O(m+n)>>O(min(m,n)) =O(n),所以A、C不正确
只有D,如果m非常接近于n,则O(m+n)~=O(2n)约等于O(n);如果m>>n,O(m+n)也约等于O(max(m,n))=O(m)
这道有序链表合并的问题,如果是按照原序排列,则最好的情况是O(min(m,n)) ,最坏的情况是O(m+n);如果是按照原序的逆序排列,则无论最好最坏都是O(m+n)
一开始说了最坏情况,下面说一下最好情况.比如链表1为100~999(900个数,m=900),链表2为0~99(100个数,n=100),整个比较次数为100次.在比较完成之后直接把链表1剩余所有链表直接挂在新链表(也可以直接是链表2)的后面.
下面我说说我对这道题的理首先这道题的准确答案是O(m+n),可是选项中没有,所以只能选一个最符合准确答案的选项,即使它不一定是正确的.
假设m大于n,
如果m非常接近于n,则O(m*n)~=O(n^2)>>O(m+n)~=O(2n),所以B不正确
如果m>>n,则O(m+n)>>O(n),O(m+n)>>O(min(m,n)) =O(n),所以A、C不正确
只有D,如果m非常接近于n,则O(m+n)~=O(2n)约等于O(n);如果m>>n,O(m+n)也约等于O(max(m,n))=O(m)
这道有序链表合并的问题,如果是按照原序排列,则最好的情况是O(min(m,n)) ,最坏的情况是O(m+n);如果是按照原序的逆序排列,则无论最好最坏都是O(m+n)
一开始说了最坏情况,下面说一下最好情况.比如链表1为100~999(900个数,m=900),链表2为0~99(100个数,n=100),整个比较次数为100次.在比较完成之后直接把链表1剩余所有链表直接挂在新链表(也可以直接是链表2)的后面.
看了已知两个长度分别为m和n的升序...的网友还看了以下:
几何题已知三角形ABC三边的长分别为《m的平方+16*n的平方》,《9*m的平方+4*n的平方》, 2020-04-27 …
正方体ABCD-A'B'C'D'的棱长为8,M.N.P分别是A'B',AD,BB'的中点.(1)画 2020-05-16 …
正方形ABCD和CEFG的边长分别为m,n,那么三角形AEG的面积的值( ) A 只与m的大小相关 2020-05-16 …
难设n个分别标有1,2,……n的球放入编有1,2,……n的n个盒子大神进设n个分别标有1,2,…… 2020-07-11 …
在棱长是a的正方体ABCD-A1B1C1D1中,M,N,P分别问AB,BC,CC1的中点,则过MN 2020-07-13 …
步长表示两个相邻脚印前脚尖(或后脚跟)之间的距离.对于成年男子来说,可以用公式“n÷p=140”来 2020-07-18 …
如图所示,氢原子在不同能级间发生a、b、c三种跃迁时,释放光子的波长分别是λa、λb、λc,则下列说 2020-11-03 …
解释下关于"几年内的平均增长率"的说法当什么时候它表达的意思是1+(d%)^n(d%平均增长率,n代 2020-11-07 …
(2009•梧州)如图是用火柴棍摆成的边长分别是1,2,3根火柴棍时的正方形.当边长为n根火柴棍时, 2020-11-13 …
用火柴摆成边长分别是1.2.3根火柴的正方形,所用的根数为4.12.24,当边长为n根火柴时,若摆出 2020-12-05 …