LEETCODE 21合併有序鍊錶

2021-10-03 05:54:03 字數 1318 閱讀 2014

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通

過拼接給定的兩個鍊錶的所有節點組成的。

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...