將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。
示例:輸入: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...