力扣(LeetCode)21 合併兩個有序鍊錶

2021-09-22 13:01:21 字數 894 閱讀 7315

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。

示例:輸入:1->2->4, 1->3->4

輸出:1->1->2->3->4->4

思路:難點在於這是無頭節點的鍊錶,所以要首先找出頭節點較小的鍊錶標記為min,另乙個標記為max,這樣就對max進行遍歷,如果max的值大於等於min當前的值且小於min->next的值,那麼此max的結點插入min中且max向後移動一位,否則min向後移動一位

注意:要解決兩個鍊錶有乙個為空或者同時為空的情況

這次跟大佬學習了遞迴寫法,遞迴是真的簡單其實並不是很容易理解

#include#includeusing namespace std;

typedef struct listnode

listnode,*ptrtonode;

void print(ptrtonode n)

printf("\n");

return;

}ptrtonode insert(ptrtonode n,int e)

else

q->next = p;

}return n;

}class solution

else

while(max!=null && min->next!=null)

else

}if(min->next == null)

min->next = max;

return start;

}};//class solution

//// else

//

// }

//};

int main()

leetcode21 合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 思路 每次判斷兩個鍊錶的頭部小的數值,訪問小的,並讓該鍊錶往後移動。注意 注意鍊錶走完,為空的情況即可。遇到的問題 一開始不太理解鍊錶,返回e...

LEETCODE 21 合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4c 第一遍將 相等 的這個else分支寫錯了,主要錯誤在於,next指標指向下乙個的這條語句寫到了後面,導致節點自己指向自己,造成了超時錯誤 執...

leetcode 21 合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 definition for singly linked list.struct listnode class solution else t...