zoukankan      html  css  js  c++  java
  • 147. 对链表进行插入排序

    147. 对链表进行插入排序

    题意

    对链表进行插入排序

    解题思路

    利用插入排序的思想,当前节点和下一个节点进行比较,找到当前值大于下一个值的节点A,接着将该节点A的方向指向节点的下下个位置C,找到最后一个个比当前节点的下一个节点B的值还有小的节点E,将节点B的方向指向节点E的下一个节点Q,再将节点E的方向指向节点B,完成整个两两交换的过程;

    举例来讲如下:

    实现

    class Solution(object):
       def insertionSortList(self, head):
           """
          :type head: ListNode
          :rtype: ListNode
          """
           if not head or not head.next:
               return head
           cur = head
           # 新建一个无用的节点
           dummy = ListNode(0)
           dummy.next = head
           while cur.next:
               if cur.val <= cur.next.val:
                   cur = cur.next
               else:
                   next_node = cur.next
                   cur.next = next_node.next
                   prev_node = dummy
                   # 找到最后一个比下一个节点的值还要小的节点
                   while prev_node.next.val <= next_node.val:
                       prev_node = prev_node.next
                   next_node.next = prev_node.next
                   prev_node.next = next_node
           return dummy.next
  • 相关阅读:
    Go 环境变量相关操作
    Go命令行参数解析flag包
    go sync.once用法
    使用go语言编写IOS和Android程序
    go map的使用
    go runtime.Gosched()的作用分析
    go中的读写锁RWMutex
    go互斥锁Mutex
    go import使用及. _的作用解析
    利用channel在goroutins之间控制同步和传递数据
  • 原文地址:https://www.cnblogs.com/George1994/p/10549088.html
Copyright © 2011-2022 走看看