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
  • 相关阅读:
    SQL Server学习之路:建立数据库、建立表
    tomcat访问的重定向问题
    PAT A1107——并查集
    ^-^
    JSON.parse()和JSON.stringify()的用法
    Android——ViewHolder的作用与用法
    题解-Atcoder_agc005D ~K Perm Counting
    题解-bzoj2560 串珠子
    题解-Codeforces710F String Set Queries
    游记-NOIP2018
  • 原文地址:https://www.cnblogs.com/George1994/p/10549088.html
Copyright © 2011-2022 走看看