随笔分类 - 排序算法
摘要:1 def partition(start,end,array): 2 pivot=array[start] 3 left,right=start+1,end 4 5 while True: 6 7 while left<=right and array[left]<=pivot: 8 left+=
阅读全文
摘要:https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-xu-dui-lcof/ 利用归并排序来查找逆序对,思路: 1. divide部分,先递归将数组分成最小单元的数组,递归出口 start>=end 为什么要加等号,因为每次递归是 递归 start
阅读全文
摘要:本题与31.下一个排列一样都是数学题,难点是实现 思路: 1. n个整数的全排列有n!种 2. 对于第k个全排列,除以下一位的阶乘确定每一位的数字 3. 比如 第一位要除以 (n-1)! 来确定第一位的数字,然后从Nums里面pop出
阅读全文
摘要:https://www.runoob.com/w3cnote/quick-sort.html 1. 双指针,left, right , while left < right: 一直重复 2. 2. 每次递归,取l s[ left ] 为temp a) 从right往回遍历,找到第一个比temp小的数
阅读全文
摘要:给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。 本题依然是排序算法,怎么排序示例二: str( x ) + str( y ) > str( y ) + str( x ) 则让 x 排列在 y 的前面,但是需要借助cmp_to_key: https://zhuanlan.zhihu.co
阅读全文
摘要:给出一个区间的集合,请合并所有重叠的区间。 思路: 1.先将 list of lists 用sort排序, 本题中根据list第一个元素进行sort可以直接 .sort() a)如果需要使用 list.sort(key = function) ,可参考 https://www.cnblogs.com
阅读全文
摘要:给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 注意: 1. cur 遍历到0时,与left指针交换值,cur+=1, left+=1 2. cur
阅读全文
摘要:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 本题我掌握了两个方法: 1. 遍历所有链表,将其 nodes 的 val 放入一个list, 然后list.sort(),然后再放入链表result O(NlogN) 2. 就是我用的方法,先写合并两个链表的函数,再分而治之的合
阅读全文
摘要:8.11更新 快速排序看起来更易懂,而且更好操作 题解来自 https://leetcode-cn.com/problems/sort-list/solution/python-by-scut_dell/ 技巧: 1. 设置None,是的链表Node有变量可指,用这种方法存储了链表 Big = No
阅读全文

浙公网安备 33010602011771号