在LeetCode刷的第三题。
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} list1
* @param {ListNode} list2
* @return {ListNode}
*/
var mergeTwoLists = function(list1, list2) {
if(list1 == null && list2 == null) return null;
let list = [], p1 = list1, p2 = list2;
while(p1){
list[list.length] = p1.val;
p1 = p1.next;
}
while(p2){
list[list.length] = p2.val;
p2 = p2.next;
}
list.sort(function(a, b){
return a - b;
});
let res = new ListNode(), cur = res;
for(let i = 0; i < list.length; i++){
cur.val = list[i];
if(i != list.length-1){
cur.next = new ListNode();
cur = cur.next;
}
}
return res;
};
思路就是写进数组后重新排序后再建立链表返回。
比较无脑。
供新手参考吧。
我也是新手。
这时间复杂度应该是O(logn)吧。我记得javascript的排序时间复杂的是logn。