排序
消灭猕猴桃
保持热爱,奔赴山海
展开
-
[leetCode]912.排序数组
题目https://leetcode-cn.com/problems/sort-an-array/快速排序class Solution { public int[] sortArray(int[] nums) { sort(nums, 0, nums.length - 1); return nums; } private void sort(int[] nums, int l, int r) { if (l >= r原创 2021-01-20 11:07:14 · 83 阅读 · 0 评论 -
[leetCode]1046. 最后一块石头的重量
题目https://leetcode-cn.com/problems/last-stone-weight/最大堆维护一个大顶堆,每次取出两个石头进行销毁,将销毁后剩余的石头重新加入堆中。class Solution { public int lastStoneWeight(int[] stones) { PriorityQueue<Integer> queue = new PriorityQueue<>((o1, o2) -> o2 - o原创 2020-12-30 09:21:58 · 95 阅读 · 1 评论 -
[leetCode]327. 区间和的个数
题目链接:https://leetcode-cn.com/problems/count-of-range-sum给定一个整数数组 nums,返回区间和在 [lower, upper] 之间的个数,包含 lower 和 upper。区间和 S(i, j) 表示在 nums 中,位置从 i 到 j 的元素之和,包含 i 和 j (i ≤ j)。说明:最直观的算法复杂度是 O(n^2) ,请在此基础上优化你的算法。示例:输入: nums = [-2,5,-1], lower = -2, uppe原创 2020-11-29 21:44:05 · 154 阅读 · 0 评论 -
[leetCode]493. 翻转对
题目链接:https://leetcode-cn.com/problems/reverse-pairs给定一个数组 nums ,如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对。你需要返回给定数组中的重要翻转对的数量。示例 1:输入: [1,3,2,3,1]输出: 2示例 2:输入: [2,4,3,5,1]输出: 3注意:给定数组的长度不会超过50000。输入数组中的所有数字都在32位整数的表示范围内。归并原创 2020-11-28 15:04:24 · 148 阅读 · 0 评论 -
[leetCode]164. 最大间距
题目链接:https://leetcode-cn.com/problems/maximum-gap给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 2,则返回 0。示例 1:输入: [3,6,9,1]输出: 3解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。示例 2:输入: [10]输出: 0解释: 数组元素个数小于 2,因此返回 0。说明:你可以假设数组中所有元素都是非负整原创 2020-11-26 10:27:46 · 210 阅读 · 0 评论 -
[leetCode]1370. 上升下降字符串
题目链接:https://leetcode-cn.com/problems/increasing-decreasing-string给你一个字符串 s ,请你根据下面的算法重新构造字符串:从 s 中选出 最小 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最小 的字符,且该字符比上一个添加的字符大,将它 接在 结果字符串后面。重复步骤 2 ,直到你没法从 s 中选择字符。从 s 中选出 最大 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最大 的字符,且该字原创 2020-11-25 09:20:23 · 116 阅读 · 0 评论 -
[leetCode]148.排序链表
题目链接:https://leetcode-cn.com/problems/sort-list给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?归并排序 自顶向下可以将链表不断切分,直到分割成最小部分是有序的然后在利用有序链表的合并完成链表排序,要注意循环不变量是一个左闭右开的区间。class Solution { public ListNode sortList(Li原创 2020-11-21 11:38:28 · 106 阅读 · 0 评论 -
[leetCode]147. 对链表进行插入排序
题目链接:https://leetcode-cn.com/problems/insertion-sort-list对链表进行插入排序。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到所有输入数据插入完为止。使用哑节点创建一条新链表创建一个哑节点,使用pre指针指向需要插入位置的前一个节点,使用cur指针指向与当前插入节点比较的节点,使用p指原创 2020-11-20 10:19:14 · 65 阅读 · 0 评论 -
[leetCode]1030. 距离顺序排列矩阵单元格
题目链接:https://leetcode-cn.com/problems/matrix-cells-in-distance-order给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c),满足 0 <= r < R 且 0 <= c < C。另外,我们在该矩阵中给出了一个坐标为 (r0, c0) 的单元格。返回矩阵中的所有单元格的坐标,并按到 (r0, c0) 的距离从最小到最大的顺序排,其中,两单元格(r1, c1) 和 (r2, c2) 之间的距离是曼原创 2020-11-17 09:26:00 · 90 阅读 · 0 评论 -
[leetCode]1122. 数组的相对排序
题目链接:https://leetcode-cn.com/problems/relative-sort-array给你两个数组,arr1 和 arr2,arr2 中的元素各不相同arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。示例:输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,原创 2020-11-14 10:51:59 · 202 阅读 · 0 评论 -
[leetCode]75.颜色分类
题目链接:https://leetcode-cn.com/problems/sort-colors给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。首先,迭代计算原创 2020-11-10 17:07:05 · 121 阅读 · 1 评论 -
[leetCode]451. 根据字符出现频率排序
题目链接:https://leetcode-cn.com/problems/sort-characters-by-frequency给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:"tree"输出:"eert"解释:'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。示例 2:输入:"cccaaa"输出:"cccaaa"解释:'c'和'a'都出现三次。此外,"aa原创 2020-11-10 16:06:36 · 178 阅读 · 0 评论 -
[leetCode]347. 前 K 个高频元素
题目链接:https://leetcode-cn.com/problems/top-k-frequent-elements给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]提示:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) , n原创 2020-10-30 20:38:06 · 177 阅读 · 0 评论 -
[leetCode]215. 数组中的第K个最大元素
题目链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。原创 2020-11-09 14:55:12 · 77 阅读 · 0 评论