將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通1. 迭代法,比較原兩煉表中元素大小後將元素插入新的鍊錶中過拼接給定的兩個鍊錶的所有節點組成的。
listnode* mergetwolists(listnode* l1, listnode* l2) else
prev = prev->next;
}prev->next = l1 != null ? l1 : l2;//其中乙個挪完,另外置上
return prehead->next;
}
2. 將兩條鍊錶中的元素全部存入向量,對向量排序後再用向量中的元素覆蓋鍊錶中的元素,同時將兩條鍊錶鏈結起來
listnode* mergetwolists(listnode* l1, listnode* l2)
if(l2==null)
vectora;
listnode *p1 = l1;
listnode *p2 = l2;
while(p1!=null)
while(p2!=null)
sort(a.begin(),a.end());
p1 = l1;
bool sign =0;//保證只連線一次
for(int i =0;ival = a[i];
if(p1->next==null&&sign==0)
p1 = p1->next;
}return l1;
}
3. 跟2的做法大致相同,但沒有將兩條鍊錶連起來,而是新建了一條鍊錶
listnode* mergetwolists(listnode* l1, listnode* l2) ;
while (l1!=null)
while (l2 != null)
sort(vec.begin(), vec.end());
int len = vec.size();
listnode* p=new listnode(vec[0]);
listnode* head = p;
for (int i = 1; i < len; i++)
return head;
}
4. 將兩鍊錶連線後用冒泡法
struct listnode* mergetwolists(struct listnode* l1, struct listnode* l2)}}
return l1;
}
Leetcode 21 合併有序鍊錶
題目簡介 將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 include using namespace std definition for singly linked list.stru...
LeetCode21 合併2個有序鍊錶
鍊錶已經有序,可使用雙指標l1和l2,分別指向第乙個和第二個鍊錶。再設定乙個指向新煉表頭節點的指標,以及維護乙個指向新鍊錶最後乙個節點的指標。使用雙指標遍歷遍歷兩個鍊錶,比較後將節點新增到新鍊錶的末尾。反思 知道要使用雙指標,但是並未想到設定哨兵和尾指標 指向新鍊錶 一開始的思路是將第二個鍊錶的節一...
leetcode21 合併兩個有序鍊錶
將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 思路 每次判斷兩個鍊錶的頭部小的數值,訪問小的,並讓該鍊錶往後移動。注意 注意鍊錶走完,為空的情況即可。遇到的問題 一開始不太理解鍊錶,返回e...