排序
各种排序方法
向光.
路过人间,绝非一瞬间.
展开
-
LeetCode.302 场周赛___03_6121. 裁剪数字后查询第 K 小的数字____排序
再给你一个下标从0开始的二维整数数组queries,其中queries[i]=[ki,trimi]。输入nums=[“102”,“473”,“251”,“814”],queries=[[1,1],[2,3],[4,2],[1,2]]输入nums=[“24”,“37”,“96”,“04”],queries=[[2,1],[2,2]]请你返回一个长度与queries相等的数组answer,其中answer[i]是第i次查询的结果。输出[2,2,1,0]...原创 2022-07-17 13:01:26 · 119 阅读 · 0 评论 -
2022年度杭州未来科技城数字经济人才编程大赛01. 信号接收___Java定制排序
假设有若干信号发射源定时发送信号, signals[i] = [start, end) 表示第 i 个信号发射源运作的开始时间 start 和停止时间 end 。若调度员的接收设备同一时刻仅能接收一个发射源发出的信号,请判断调度员能否收到所有发射源的完整信号。注意:只有接收了一个信号源从开始到结束的所有信号才算完整信号。提示:直接排序即可,使用定制排序;...原创 2022-07-13 14:10:37 · 184 阅读 · 0 评论 -
Leetcode.179. 最大数__自定义排序
179. 最大数给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。示例 1:输入:nums = [10,2]输出:"210"示例 2:输入:nums = [3,30,34,5,9]输出:"9534330"示例 3:输入:nums = [1]输出:"1"示例 4:输入:nums = [10]输出:"10" 提示:1 <= nums.length <=原创 2022-01-22 08:44:43 · 287 阅读 · 0 评论 -
Leetcode.268. 丢失的数字——四法
268. 丢失的数字给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。示例 1:输入:nums = [3,0,1]输出:2解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。示例 2:输入:nums = [0,1]输出:2解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。2 是丢失的数字,因为它没有出现在 nums 中原创 2021-12-10 12:08:28 · 532 阅读 · 0 评论 -
Leetcode.1005. K 次取反后最大化的数组和——贪心+计数排序
12.6 每日一题——K 次取反后最大化的数组和输入一个整数数组和一个整数k,按以下方式修改该数组1.选择某个下标 i 并将 nums[i] 替换为 -nums[i]2.重复这个过程恰好 k 次。可以多次选择同一个下标 i 。以这种方式修改数组后,返回数组可能的最大和 。(这次还是交博客链接)输入:nums = [4,2,3], k = 1输出:5解释:选择下标 1 ,nums 变为 [4,-2,3] 。输入:nums = [3,-1,0,2], k = 3输出:6输入:nums =原创 2021-12-06 21:55:20 · 77 阅读 · 0 评论 -
~~~2021.12.1 每日一题---是否含有重复元素~~~
2021.12.1 每日一题12.1 是否含有重复元素给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,那么程序打印true;如果数组中每个元素都不相同,则程序打印false ;示例1:输入:[1,2,3,1]输出: true示例2:输入:[1,2,3]输出: false要求:不可直接调用java已经封装好Arrays工具类;严格按照用例的输入输出形式;尽量使用多种方法解决; 可上交博客链接或直接交图片;题解:前引:这题是一道简单的数组题目原创 2021-12-02 00:41:06 · 744 阅读 · 0 评论 -
Leetcode.260. 只出现一次的数字 III---精妙的位运算
260. 只出现一次的数字 III给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?示例 1:输入:nums = [1,2,1,3,2,5]输出:[3,5]解释:[5, 3] 也是有效的答案。示例 2:输入:nums = [-1,0]输出:[-1,0]示例 3:输入:nums = [0,1]输出:[1,0]提示:原创 2021-11-01 19:18:01 · 112 阅读 · 0 评论 -
Leetcode.869. 重新排序得到 2 的幂---哈希思想
869. 重新排序得到 2 的幂给定正整数 N ,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。如果我们可以通过上述方式得到 2 的幂,返回 true;否则,返回 false。示例 1:输入:1输出:true示例 2:输入:10输出:false示例 3:输入:16输出:true示例 4:输入:24输出:false示例 5:输入:46输出:true提示:1 <= N <= 10^9题解:我们先将1 <= N <= 1原创 2021-10-29 20:54:43 · 126 阅读 · 0 评论 -
Leetcode.442. 数组中重复的数据---哈希+桶排序
442. 数组中重复的数据给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。找到所有出现两次的元素。你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?示例:输入:[4,3,2,7,8,2,3,1]输出:[2,3]题解:由于a[i]的范围比较特殊,我们可以利用桶排序的思想来解决这道题。即我们创建出一个数组hash当成‘桶’,并对其内元素都初始化为0,接着开始遍历数组,一旦hash[nums[i]]==0,原创 2021-10-09 14:35:18 · 117 阅读 · 0 评论 -
Leetcode.414. 第三大的数---模拟+排序
414. 第三大的数给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。示例 1:输入:[3, 2, 1]输出:1解释:第三大的数是 1 。示例 2:输入:[1, 2]输出:2解释:第三大的数不存在, 所以返回最大的数 2 。示例 3:输入:[2, 2, 3, 1]输出:1解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1 。 提示:1 <原创 2021-10-09 14:21:37 · 44 阅读 · 0 评论 -
Leetcode.1337. 矩阵中战斗力最弱的 K 行---自定义排序
1337. 矩阵中战斗力最弱的 K 行给你一个大小为 m * n 的矩阵 mat,矩阵由若干军人和平民组成,分别用 1 和 0 表示。请你返回矩阵中战斗力最弱的 k 行的索引,按从最弱到最强排序。如果第 i 行的军人数量少于第 j 行,或者两行军人数量相同但 i 小于 j,那么我们认为第 i 行的战斗力比第 j 行弱。军人 总是 排在一行中的靠前位置,也就是说 1 总是出现在 0 之前。 示例 1:输入:mat = [[1,1,0,0,0], [1,1,1,1,0], [1,0,0,原创 2021-08-01 08:51:49 · 199 阅读 · 0 评论 -
leetcode.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:原创 2021-04-17 15:22:13 · 127 阅读 · 0 评论 -
LCP 18. 早餐组合---排序+双指针
LCP 18. 早餐组合小扣在秋日市集选择了一家早餐摊位,一维整型数组 staple 中记录了每种主食的价格,一维整型数组 drinks 中记录了每种饮料的价格。小扣的计划选择一份主食和一款饮料,且花费不超过 x 元。请返回小扣共有多少种购买方案。注意:答案需要以 1e9 + 7 (1000000007) 为底取模,如:计算初始结果为:1000000008,请返回 1示例 1:输入:staple = [10,20,5], drinks = [5,5,2], x = 15输出:6解释:小原创 2021-06-27 11:50:24 · 140 阅读 · 0 评论 -
力扣128. 最长连续序列(使用哈希表巧妙完成排序过程)
128. 最长连续序列给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。进阶:你可以设计并实现时间复杂度为 O(n) 的解决方案吗?示例 1:输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。示例 2:输入:nums = [0,3,7,2,5,8,4,6,0,1]输出:9 提示:0 <= nums.length <= 104-109原创 2021-03-20 19:26:08 · 257 阅读 · 0 评论 -
力扣179. 最大数----字符串处理+排序
179. 最大数给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。示例 1:输入:nums = [10,2]输出:"210"示例 2:输入:nums = [3,30,34,5,9]输出:"9534330"示例 3:输入:nums = [1]输出:"1"示例 4:输入:nums = [10]输出:"10" 提示:1 <= nums.length <=原创 2021-04-12 19:06:32 · 477 阅读 · 0 评论 -
第七届蓝桥杯 第九题 交换瓶子---灵活的排序
题目叙述:有N个瓶子,编号 1 ~ N,放在架子上。比如有5个瓶子:2 1 3 5 4要求每次拿起2个瓶子,交换它们的位置。经过若干次后,使得瓶子的序号为:1 2 3 4 5对于这么简单的情况,显然,至少需要交换2次就可以复位。如果瓶子更多呢?你可以通过编程来解决。输入格式为两行: 第一行: 一个正整数N(N<10000), 表示瓶子的数目 第二行:N个正整数,用空格分开,表示瓶子目前的排列情况。输出数据为一行一个正整数,表示至少交换多少次,才能完成排序。例如,输入:原创 2021-04-17 19:09:13 · 342 阅读 · 0 评论 -
力扣在排序数组中查找元素的第一个和最后一个位置---暴力与二分
34. 在排序数组中查找元素的第一个和最后一个位置给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1原创 2020-12-28 19:32:00 · 328 阅读 · 1 评论 -
leetcode.1846. 减小和重新排列数组后的最大元素---排序+贪心
1846. 减小和重新排列数组后的最大元素给你一个正整数数组 arr 。请你对 arr 执行一些操作(也可以不进行任何操作),使得数组满足以下条件:arr 中 第一个 元素必须为 1 。 任意相邻两个元素的差的绝对值 小于等于 1 ,也就是说,对于任意的 1 <= i <arr.length (数组下标从 0 开始),都满足 abs(arr[i] - arr[i - 1]) <= 1 。abs(x) 为 x 的绝对值。 你可以执行以下 2 种操作任意次:减小 arr 中任意元素的原创 2021-07-15 11:12:27 · 96 阅读 · 0 评论 -
Leetcode.1877. 数组中最大数对和的最小值---排序+贪心
1877. 数组中最大数对和的最小值一个数对 (a,b) 的 数对和 等于 a + b 。最大数对和 是一个数对数组中最大的 数对和 。比方说,如果我们有数对 (1,5) ,(2,3) 和 (4,4),最大数对和 为 max(1+5, 2+3, 4+4) = max(6, 5, 8) = 8 。给你一个长度为 偶数 n 的数组 nums ,请你将 nums 中的元素分成 n / 2 个数对,使得:nums 中每个元素 恰好 在 一个 数对中,且最大数对和 的值 最小 。请你在最优数对划分的方案下原创 2021-07-20 20:21:30 · 97 阅读 · 0 评论 -
leetcode.1833. 雪糕的最大数量---贪心思想+直接排序/桶排序
1833. 雪糕的最大数量夏日炎炎,小男孩 Tony 想买一些雪糕消消暑。商店中新到 n 支雪糕,用长度为 n 的数组 costs 表示雪糕的定价,其中 costs[i] 表示第 i 支雪糕的现金价格。Tony 一共有 coins 现金可以用于消费,他想要买尽可能多的雪糕。给你价格数组 costs 和现金量 coins ,请你计算并返回 Tony 用 coins 现金能够买到的雪糕的 最大数量 。注意:Tony 可以按任意顺序购买雪糕。示例 1:输入:costs = [1,3,2,4,1]原创 2021-07-05 22:40:38 · 98 阅读 · 0 评论 -
快速排序心得(以C语言代码为例)
/*快速排序理解好其概念:即先确定一个界定值,根据界定值大小设置两个探测器,一个从最左边出发找大于界定值的,一个从最右边出发找小于界定值的,二者为分开进行,即一个找完另一个再开始找找到后便交换,如此知道探测器相遇,则将此一个数组“分开”成为两个数组,再确定一个界定值,再开始找…*/#include <stdio.h>void jh(int *x,int *y)//传入的为地址,所以改变的是实参的值,不然的话改变的只是x,y这两个形参的值而已 { int temp; temp=原创 2020-12-21 15:55:20 · 338 阅读 · 2 评论 -
力扣数组1122.数组的相对排序
解题思路此题即最方便的点在于找了一个中间数组。即先创立一个最终返回的数组,再将arr1数组排序后,令其与arr2数组比较,若一样则传进最终那个数组中,不一样则继续找,但是将他的序号记下来,供后者选择,详细思想见代码注释。代码/** * Note: The returned array must be malloced, assume caller calls free(). */int px (int*x,int*y){ int a,b; a=*x; b=*y;原创 2020-11-15 16:01:00 · 90 阅读 · 0 评论 -
力扣删除排序数组中的重复项
**题目:**给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原创 2020-11-29 16:48:02 · 136 阅读 · 0 评论 -
力扣最后一块石头的重量---排序求解
1046. 最后一块石头的重量有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么–粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。示例:输入:[2,7,4,1,8,1]输出:1解释:先选出 7原创 2020-12-29 15:42:53 · 215 阅读 · 2 评论 -
力扣由二进制下1的个数排序
解题思路原先在求二进制钻了牛角尖,非要将数组的每一个数都变成二进制,之后想再利用计算机除的性质和取余数来求得1的个数,但这样过于繁杂而且没有必要,因为我们要的只是1的个数而已。所以又十进制转换为二进制的定义即可。代码/** * Note: The returned array must be malloced, assume caller calls free(). */int*cf1;//定义指针指向存放1的个数的数组int q1gs(int x)//此为求1的个数的函数{ int原创 2020-11-06 18:38:17 · 102 阅读 · 0 评论