跳到主要内容

147.对链表进行插入排序

链接:147.对链表进行插入排序
难度:Medium
标签:链表、排序
简介:对链表进行插入排序。

题解 1 - typescript

  • 编辑时间:2020-11-20
  • 执行用时:128ms
  • 内存消耗:41.5MB
  • 编程语言:typescript
  • 解法介绍:遍历两次进行插入。
function insertionSortList(head: ListNode | null): ListNode | null {
if (head === null) return null;
const tempHead = new ListNode(0, head);
let last = head;
let p = head.next;
last.next = null;
while (p !== null) {
const next = p.next;
add(p);
p = next;
}
return tempHead.next;
function add(node: ListNode): void {
let temp = tempHead;
const val = node.val;
while (temp.next !== null && temp.next !== last) {
if (temp.next.val < val) {
temp = temp.next;
} else {
node.next = temp.next;
temp.next = node;
return;
}
}
if (temp.next === last) {
if (last.val > val) {
node.next = temp.next;
temp.next = node;
} else {
last.next = node;
node.next = null;
last = node;
}
}
}
}