---
两个升序链表合并为降序链表
原文:https://blog.csdn.net/calculate23/article/details/97490628
---注意算法中单次比较中大的一方下标不变,以此实现两两比较---
看了原文解释后个人理解如下,问题的求解无非两步:
求时间复杂度的步骤:
-
考虑最坏情况下的执行次数,例如
l1: 1 3 5 7 9 (m=5)
l2: 2 4 6 (n=3)
数字穿插在两个链表中,需要比较m+n-1次
(第一次:1和2比,1按头插法插入链表l3,继续;
第二次:2和3比,2插入l3,以此类推...
当链表l2走完后l1中剩余的7,9直接插入l3)
-
根据此执行次数得到对应的时间复杂度
注意:时间复杂度不等于具体的执行步数,其作用是用来反映执行时间的数量级
所以由加法规则可知:
O(m+n-1)=O(max(m,n))