zoukankan      html  css  js  c++  java
  • [LeetCode]题解(python):148-Sort List

    题目来源:

      https://leetcode.com/problems/sort-list/


    题意分析:

      用nlog(n)的时间复杂度实现一个链表的排序。


    题目思路:

      用归并排序的思想,将链表用快慢指针分成两半,然后两半排好序,最后归并。


    代码(python):

    # Definition for singly-linked list.
    # class ListNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    
    class Solution(object):
        def sortList(self, head):
            """
            :type head: ListNode
            :rtype: ListNode
            """
            if head == None or head.next == None:
                return head
            slow = ListNode(0)
            slow.next = fast = head
            while fast and fast.next:
                slow = slow.next
                fast = fast.next.next
            head1,head2 = head,slow.next
            slow.next = None
            tmp1,tmp2 = self.sortList(head1),self.sortList(head2)
            ans = ListNode(0)
            p = ans
            while tmp1 and tmp2:
                if tmp1.val < tmp2.val:
                    p.next = tmp1
                    tmp1,p = tmp1.next,p.next
                else:
                    p.next = tmp2
                    tmp2,p = tmp2.next,p.next
            if tmp1:
                p.next = tmp1
            if tmp2:
                p.next = tmp2
            return ans.next
                    
    View Code
  • 相关阅读:
    Android设备管理器
    Android中读取手机联系人
    PopupWindow
    Activity之间数据的传递
    wpa_supplicant
    nandflash之基本特性
    NAND NOR Flash 和MTD
    mtd-util
    linux 常用命令
    minizip -基于zlib开源代码库
  • 原文地址:https://www.cnblogs.com/chruny/p/5478065.html
Copyright © 2011-2022 走看看