zoukankan      html  css  js  c++  java
  • 109. 排序链表

    109. 排序链表

    题意

    O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。

    解题思路

    常数集空间复杂度:将其转化为数组;

    时间复杂度为O(nlogn):用归并排序;

    实现

    # 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 not head:
               return None

    # 转化为数组
           result = []
           head_tmp = head
           while head_tmp:
               result.append(head_tmp.val)
               head_tmp = head_tmp.next
           
           # 归并排序
           result = self.merge_sort(result)
           # 将排序后的结果重新填充到链表中
           head_tmp = head
           for i in range(len(result)):
               head_tmp.val = result[i]
               head_tmp = head_tmp.next
           
           return head
           
       def merge(self, left, right):
           i, j = 0, 0
           left_len, right_len = len(left), len(right)
           result = []
           while i < left_len and j < right_len:
               if left[i] < right[j]:
                   result.append(left[i])
                   i += 1
               else:
                   result.append(right[j])
                   j += 1
           result += left[i:]
           result += right[j:]
           return result

       def merge_sort(self, lists):
           lists_len = len(lists)
           if lists_len <= 1:
               return lists

           center = lists_len / 2
           left = self.merge_sort(lists[:center])
           right = self.merge_sort(lists[center:])
           return self.merge(left, right)

  • 相关阅读:
    spring boot拦截器中获取request post请求中的参数
    netty与spring学习
    拦截器,过滤器,监听器
    CA 根证书不在“受信任的根证书颁发机构”存储区
    SpringBoot整合Shiro
    远程服务接口聚合带来的性能提升
    常见软件安全性漏洞及处理
    Mybatis中的CDATA标签
    idea运行固定多个模块项目
    理解Node.js事件驱动编程
  • 原文地址:https://www.cnblogs.com/George1994/p/10542316.html
Copyright © 2011-2022 走看看