题目描述
咦,为什么错了,嗯?怎么AC了。
算法1
(暴力枚举) $O(n)$
两条链表加起来的长度 应该是O(2n)吧
C++ 代码
class Solution {
public:
ListNode* merge(ListNode* l1, ListNode* l2) {
ListNode* s1 = l1,* s2 = l2,* dummy = new ListNode(-1);
l1 = dummy;
while(s1 && s2){
if(s1->val <=s2->val) {
dummy->next = s1;
dummy = dummy->next ;
s1 = s1->next;
}
else{
dummy->next = s2;
dummy = dummy->next ;
s2 = s2->next;
}
}
if(!s1 &&!s2);
else if(!s1) dummy->next = s2;
else if(!s2) dummy->next = s1;
return l1->next;
}
};
时间复杂度只看最高次项,而且不带常量,也就是说,不管是 2n还是100n,都是O(n)的,如果是n + n^2的,时间复杂度就是 O(n^2)的
嗯,那我这个是O(n)吧?