[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
[LeetCode]题解(python):148-Sort List的更多相关文章
- 【LeetCode with Python】 Sort List
博客域名:http://www.xnerv.wang 原题页面:https://oj.leetcode.com/problems/sort-list/ 题目类型: 难度评价:★ 本文地址:http:/ ...
- LeetCode题解之Insertion Sort List
1.题目描述 2.题目分析 利用插入排序的算法即可.注意操作指针. 3.代码 ListNode* insertionSortList(ListNode* head) { if (head == NUL ...
- C#版 - LeetCode 148. Sort List 解题报告(归并排序小结)
leetcode 148. Sort List 提交网址: https://leetcode.com/problems/sort-list/ Total Accepted: 68702 Total ...
- [LeetCode题解]: Sort Colors
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given an a ...
- 【LeetCode】147. Insertion Sort List 解题报告(Python)
[LeetCode]147. Insertion Sort List 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: h ...
- Leetcode之148. Sort List Medium
https://leetcode.com/problems/sort-list/ Sort a linked list in O(n log n) time using constant space ...
- 148. Sort List - LeetCode
Solution 148. Sort List Question 题目大意:对链表进行排序 思路:链表转为数组,数组用二分法排序 Java实现: public ListNode sortList(Li ...
- 【LeetCode题解】排序
1. 排序 排序(sort)是一种常见的算法,把数据根据特定的顺序进行排列.经典的排序算法如下: 冒泡排序(bubble sort) 插入排序(insertion sort) 选择排序(selecti ...
- 【LeetCode题解】347_前K个高频元素(Top-K-Frequent-Elements)
目录 描述 解法一:排序算法(不满足时间复杂度要求) Java 实现 Python 实现 复杂度分析 解法二:最小堆 思路 Java 实现 Python 实现 复杂度分析 解法三:桶排序(bucket ...
- 【LeetCode题解】350_两个数组的交集Ⅱ
目录 [LeetCode题解]350_两个数组的交集Ⅱ 描述 方法一:映射 Java 实现 Python 实现 类似的 Python 实现 方法二:双指针 Java 实现 Python 实现 [Lee ...
随机推荐
- IIS Could not load file or assembly 'CLDBCommon.DLL' or one of its dependencies.找不到指定的模块
1.卸载原来的.NET4.0,从新下载.NET4.5.1完整安装程序.后问题解决附:.NET4.5.1下载地址:https://www.microsoft.com/zh-cn/download/det ...
- asp.net uploadfile 上传文件,连接已重置问题
修改web.config中的配置 <httpRuntime maxRequestLength="/> //设置上传文件大小(kb)和响应时间(s) 针对iis7或更高版本另需要在 ...
- c++多线程参数的传递
#include <iostream> #include <pthread.h> //多线程相关操作头文件,可移植众多平台 using namespace std; struc ...
- PHP中简单的图形处理
PHP中简单的图形处理 计应134凌豪 1.加载GD库 GD库是一个开放的动态创建图像.源代码公开的函数库,可以从官方网站http://www.boutell.com/gd处下载.目前,GD库支持GI ...
- php curl封装类
一个php curl封装的类,减少代码量,简化采集工作.这个类也是我工作的最常用的类之一.这里分享给大家.配合上phpquery,十分好用. <?php namespace iphp\core; ...
- [linux]segvcatch简单使用
https://code.google.com/p/segvcatch/ This is a crossplatform C++ library designed to convert a hardw ...
- 论山寨手机与Android联姻 【2】手机OS成为核心
手机凭借通话和短信这两项基本功能,积累了用户,开拓了市场.但是用户的需求是永无止境的,对于手机制造商来说,紧跟用户需求,拓展手机功能,是机会也是挑战. 1988年第一款数码相机,在日本上市.数码相机的 ...
- c# xml操作类
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Xm ...
- mysql utf8 中文
#!/usr/bin/perl use DBI; use Encode; $user="root"; $passwd="1234567"; $dbh=" ...
- C++STL_类模板举例
#include<stdio.h> #include<typeinfo.h> template <class T1,class T2> class A{ T1 i; ...