链表
23. 合并 K 个升序链表
给你一个链表数组,每个链表都已经按升序排列。
请你将所有链表合并到一个升序链表中,返回合并后的链表。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
var mergeKLists = function(lists) { if(!lists||lists.length===0){ return null } const mergelist = (app,number) =>{ if(number === lists.length){ return app } let nextnode = lists[number] let topnode = app let fristnode = app.next let secondenode = nextnode while(fristnode&&secondenode){ if(fristnode.val>secondenode.val){ let sss = secondenode.next secondenode.next = topnode.next topnode.next = secondenode topnode = secondenode secondenode = sss }else{ fristnode = fristnode.next topnode = topnode.next } } if(fristnode===null){ topnode.next = secondenode } return mergelist(app,number+1) } let mergelistnode = lists[0] || null let prelistnode = new ListNode(0,mergelistnode) return mergelist(prelistnode,1).next };
|
19. 删除链表的倒数第 N 个结点
给你一个链表,删除链表的倒数第 n
个结点,并且返回链表的头结点。
进阶:你能尝试使用一趟扫描实现吗?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
var removeNthFromEnd = function(head, n) { let app = new ListNode(0,head) let left = app let right = app while(n--){ right = right.next } while(right.next){ right = right.next left = left.next } left.next = left.next.next return app.next };
|