LeetCode | Insertion Sort List
2014-02-07 15:58
477 查看
题目
Sort a linked list using insertion sort.
分析
题目已经明确说了用插入排序,由于是链表,无法像数组那样从后往前依次比较插入,只能从前往后了。
在链表首部添加一个哨兵可以稍微简化下代码。
代码
public class InsertionSortList {
public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
}
public ListNode insertionSortList(ListNode head) {
if (head == null || head.next == null) {
return head;
}
// dummy
ListNode dummy = new ListNode(Integer.MIN_VALUE);
dummy.next = head;
ListNode qPre = head;
ListNode q = head.next;
while (q != null) {
ListNode next = q.next;
if (q.val < qPre.val) {
ListNode pPre = dummy;
ListNode p = dummy.next;
while (!p.equals(q)) {
if (q.val < p.val) {
// cut
qPre.next = next;
// paste
q.next = pPre.next;
pPre.next = q;
break;
}
pPre = p;
p = p.next;
}
} else {
qPre = q;
}
q = next;
}
return dummy.next;
}
}
Sort a linked list using insertion sort.
分析
题目已经明确说了用插入排序,由于是链表,无法像数组那样从后往前依次比较插入,只能从前往后了。
在链表首部添加一个哨兵可以稍微简化下代码。
代码
public class InsertionSortList {
public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
}
public ListNode insertionSortList(ListNode head) {
if (head == null || head.next == null) {
return head;
}
// dummy
ListNode dummy = new ListNode(Integer.MIN_VALUE);
dummy.next = head;
ListNode qPre = head;
ListNode q = head.next;
while (q != null) {
ListNode next = q.next;
if (q.val < qPre.val) {
ListNode pPre = dummy;
ListNode p = dummy.next;
while (!p.equals(q)) {
if (q.val < p.val) {
// cut
qPre.next = next;
// paste
q.next = pPre.next;
pPre.next = q;
break;
}
pPre = p;
p = p.next;
}
} else {
qPre = q;
}
q = next;
}
return dummy.next;
}
}
相关文章推荐
- LeetCode OJ Insertion Sort List
- LeetCode | Insertion Sort List
- leetcode Insertion Sort List
- 【leetcode 链表 】Insertion Sort List
- [LeetCode] Insertion Sort List
- leetcode Insertion Sort List
- [Leetcode] #147 Insertion Sort List
- [LeetCode]147 Insertion Sort List
- [leetcode] Insertion Sort List(python)
- LEETCODE: Insertion Sort List
- LeetCode ||Insertion Sort List
- leetcode Insertion Sort List
- Insertion Sort List —— LeetCode
- [Leetcode 147, medium] Insertion Sort List
- LeetCode(147) Insertion Sort List
- LeetCode:Insertion Sort List (Java)
- LeetCode—Insertion Sort List
- 【leetcode】Insertion Sort List
- leetcode 链表 Insertion Sort List
- LeetCode (Insertion Sort List)