It is quite a basic problem. however I spent half an hour solving it and made two mistakes. guess it's because I haven't written some fundamental data structures like linked list for a while and kind of get lost. I shoshould practice these questions more.
public class Solution {public ListNode insertionSortList(ListNode head) {if (head == null || head.next == null)return head;ListNode cNode = head.next;ListNode prevcNode = head;while (cNode != null) {if (cNode.val <= head.val) {prevcNode.next = cNode.next;cNode.next = head;head = cNode;cNode = prevcNode.next;}else {ListNode tNode = head;while( tNode.next != cNode &&tNode.next.val < cNode.val){tNode = tNode.next;}if(tNode.next == cNode){prevcNode = cNode;cNode = cNode.next;}else{prevcNode.next = cNode.next;cNode.next = tNode.next;tNode.next = cNode;cNode = prevcNode.next;}}}return head;}}
Leetcode-insertion sort list