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
  • 相关阅读:
    C# UDP实现通信的方法
    Leetcode 559. N叉树的最大深度
    101. 对称二叉树
    108. 将有序数组转换为二叉搜索树
    剑指 Offer 55
    Linux
    Linux
    Linux
    Linux
    Linux
  • 原文地址:https://www.cnblogs.com/George1994/p/10549088.html
Copyright © 2011-2022 走看看