Leetcode 147. Insertion Sort List

Sort a linked list using insertion sort.

题意:用插入排序的方法排序一个链表。

思路:

  1. 重启一个头结点指向新链表。

  2. 遍历待排序的链表,对每个带排序的节点a,在新链表中找第一个比a大的节点b。

  3. 将a插入到新链表,需要借助一个辅助指针pre。

     public ListNode insertionSortList(ListNode head) {
     if (head == null) {
         return null;
     }
    
     ListNode newHead = new ListNode(0);
     ListNode node = head;
     while (node != null) {
         ListNode newNode = new ListNode(node.val);
         if (newHead.next == null) {
             newHead.next = newNode;
         } else {
             //find first bigger
             ListNode pre = newHead;
             ListNode dummy = newHead.next;
             while (dummy != null && dummy.val < node.val) {
                 pre = pre.next;
                 dummy = dummy.next;
             }
             //insert
             pre.next = newNode;
             newNode.next = dummy;
         }
         node = node.next;
     }
    
     return newHead.next;
     }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容