| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> leetcode 148. 排序链表 python -> 正文阅读 |
|
[数据结构与算法]leetcode 148. 排序链表 python |
题目描述: ? 题解一(通过): 采用归并排序,归并排序算法可以参考: 1.sortList函数: ? <1>如果head为空或head.next为空,则直接返回,对用归并排序中已经划分到单个数字的情况。 ? <2>否则先确定链表长度length,将链表划分为左右两部分。 ? <3>对lefthalf right分别调用sortList继续划分。 ? <4>对划分完成的righthalf righthalf调用merge函数进行归并。 2.merge函数 ? <1>创建一个ListNode res。 ? <2>从left right第一个节点开始进行比较,将val较小的加入res。 ? <3>当left right两者有一个为空时,直接将剩下的一个加入res。 class Solution(object): def sortList(self, head): if head == None or head.next == None: return head length = 0 cur = head while cur: length = length + 1 cur = cur.next mid = length // 2 cur = head for i in range(mid - 1): cur = cur.next righthead = cur.next cur.next = None lefthead = head lefthalf = self.sortList(lefthead) righthalf = self.sortList(righthead) def merge(left, right): res = ListNode() cur = res while left and right: if left.val <= right.val: cur.next = left left = left.next else: cur.next = right right = right.next cur = cur.next cur.next = left or right return res.next return merge(lefthalf, righthalf)? ?题解二(通过): 采用最傻的办法,先把链表中所有节点的值保存在一个数组中,然后对数组进行排序,在排序后的数组的基础上创建链表。 class Solution(object): def sortList(self, head): numlist = [] cur = head while cur: numlist.append(cur.val) cur =cur.next numlist = sorted(numlist) res = ListNode() cur = res for num in numlist: node = ListNode(val=num) cur.next = node cur = cur.next return res.next ? ? ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 4:46:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |