排序
Sun_Sky_Sea
站在巨人的肩膀上
展开
-
剑指 Offer 51. 数组中的逆序对
剑指 Offer 51. 数组中的逆序对原始题目链接:https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5解题思路:统计逆序对,想到可以使用归并排序,在排序过程中比较大小,再统计逆序对的个数,归并是个分和治的过程,分是一分为二,一直达到每个子数组元素只有1个原创 2022-05-31 11:30:26 · 35 阅读 · 0 评论 -
148. 排序链表
148. 排序链表原始题目链接:https://leetcode-cn.com/problems/sort-list/给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?解题思路:这道题使用递归比较好解题,不过进阶的要求是时间复杂度是O(nlogn)和空间复杂度是O(1),递归是不满足的,因为递归会有额外的栈空间不满足空间复杂的要求,递归是从上至下进行操作,为了满足进阶的要求,需要原创 2021-04-20 15:34:40 · 67 阅读 · 0 评论 -
剑指 Offer II 060. 出现频率最高的 k 个数字
剑指 Offer II 060. 出现频率最高的 k 个数字原始题目链接:https://leetcode-cn.com/problems/g5c51o/给定一个整数数组 nums 和一个整数 k ,请返回其中出现频率前 k 高的元素。可以按 任意顺序 返回答案。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]解题思路:这道题第347题的 前 K 个高频元素 是一样的踢,看代码及原创 2022-04-26 17:55:10 · 164 阅读 · 0 评论 -
912. 排序数组
912. 排序数组原始题目链接:https://leetcode-cn.com/problems/sort-an-array/给你一个整数数组 nums,请你将该数组升序排列。示例 1:输入:nums = [5,2,3,1]输出:[1,2,3,5]示例 2:输入:nums = [5,1,1,2,0,0]输出:[0,0,1,1,2,5]解题思路:排序的基础题,手写快排,归并,堆排序。代码实现:快速排序class Solution: def sortArray(self,原创 2022-04-26 17:21:27 · 127 阅读 · 0 评论 -
378. 有序矩阵中第 K 小的元素
378. 有序矩阵中第 K 小的元素原始题目链接:https://leetcode-cn.com/problems/kth-smallest-element-in-a-sorted-matrix/给你一个 n x n 矩阵 matrix ,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是 排序后 的第 k 小元素,而不是第 k 个 不同 的元素。你必须找到一个内存复杂度优于 O(n2) 的解决方案。示例 1:输入:matrix = [[1,5,9],[10,11,13],原创 2022-04-05 14:48:53 · 287 阅读 · 0 评论 -
692. 前K个高频单词
692. 前K个高频单词原始题目链接:https://leetcode-cn.com/problems/top-k-frequent-words/给定一个单词列表 words 和一个整数 k ,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序 排序。示例 1:输入: words = [“i”, “love”, “leetcode”, “i”, “love”, “coding”], k = 2输出: [“i”, “love”]原创 2022-04-05 11:53:18 · 1230 阅读 · 0 评论 -
347. 前 K 个高频元素
前 K 个高频元素原始题目链接:https://leetcode-cn.com/problems/top-k-frequent-elements/给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]解题思路:统计数组的数字个数,存到字典中,字典按照value排序,然后.原创 2022-04-03 14:52:46 · 373 阅读 · 0 评论 -
220. 存在重复元素 III
220. 存在重复元素 III给你一个整数数组 nums 和两个整数 k 和 t 。请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i - j) <= k 。如果存在则返回 true,不存在返回 false。示例 1:输入:nums = [1,2,3,1], k = 3, t = 0输出:true示例 2:输入:nums = [1,0,1,1], k = 1, t = 2输出:true示例 3:输原创 2022-03-31 17:58:08 · 177 阅读 · 0 评论 -
排序专题实现
排序专题**# 快速排序的partition函数**# 一趟排序下来,pivot的左边都是比pivot小的元素****# pivot的右边都是比它大的元素,然后分别再对pivot的左右两边执行快速排序****# 直到所有元素有序****def partition(nums, left, right): # 初始化一个待比较的基准数据,一般选择待排序数组的第一个数据 pivot = nums[left] # 设置两个指针i, j分别指向待排序数组的开头和结尾 i, j原创 2022-03-23 10:15:03 · 246 阅读 · 0 评论 -
56. 合并区间
56. 合并区间原始题目链接:https://leetcode-cn.com/problems/merge-intervals/以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区原创 2022-03-18 10:22:10 · 180 阅读 · 0 评论 -
49. 字母异位词分组
49. 字母异位词分组原始题目链接:https://leetcode-cn.com/problems/group-anagrams/给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。示例 1:输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“原创 2022-03-17 17:13:16 · 442 阅读 · 0 评论 -
720. 词典中最长的单词
720. 词典中最长的单词原始题目链接:https://leetcode-cn.com/problems/longest-word-in-dictionary/给出一个字符串数组 words 组成的一本英语词典。返回 words 中最长的一个单词,该单词是由 words 词典中其他单词逐步添加一个字母组成。若其中有多个可行的答案,则返回答案中字典序最小的单词。若无答案,则返回空字符串。示例 1:输入:words = [“w”,“wo”,“wor”,“worl”, “world”]输出:“worl原创 2022-03-17 16:36:19 · 65 阅读 · 0 评论 -
315. 计算右侧小于当前元素的个数
315. 计算右侧小于当前元素的个数原始题目链接:https://leetcode-cn.com/problems/count-of-smaller-numbers-after-self/给你一个整数数组 nums ,按要求返回一个新数组 counts 。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。示例 1:输入:nums = [5,2,6,1]输出:[2,1,1,0]解释:5 的右侧有 2 个更小的元素 (2 和 1)原创 2021-12-21 22:12:59 · 188 阅读 · 0 评论