147. 对链表进行插入排序

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/insertion-sort-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:遍历当前的链表,当前节点的值,之后每次都从结果链表中从头遍历,知道后一个节点的值大于当前节点。在链表中删除节点。添加到结果链表中。
public ListNode insertionSortList(ListNode head) {
// 结果链表
ListNode dummyHead = new ListNode(-1);
ListNode cur = head;
while(cur != null) {
// 每次都从结果链表中,从头开始找
ListNode prev = dummyHead;
while(prev != null && prev.next != null && prev.next.val < cur.val) {
prev = prev.next;
}
// 当前节点,之后移动到下一次需要处理的节点
ListNode node = cur;
cur = cur.next;
// 删除链表中的节点。加入到结果链表中。
node.next = null;
node.next = prev.next;
prev.next = node;
}
return dummyHead.next;
}
浙公网安备 33010602011771号