
排序
c++
Crystal_Coding
这个作者很懒,什么都没留下…
展开
-
leetcode164. 最大间距/桶排序
文章目录题目:164. 最大间距基本思想1:借助set(严格来讲不符合题目要求)基本思想2:桶排序题目:164. 最大间距给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 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 16:25:18 · 451 阅读 · 0 评论 -
leetcode1370. 上升下降字符串/桶计数
文章目录题目:1370. 上升下降字符串基本思想:桶计数(哈希)题目:1370. 上升下降字符串给你一个字符串 s ,请你根据下面的算法重新构造字符串:从 s 中选出 最小 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最小 的字符,且该字符比上一个添加的字符大,将它 接在 结果字符串后面。重复步骤 2 ,直到你没法从 s 中选择字符。从 s 中选出 最大 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最大 的字符,且该字符比上一个添加的字符小,将它 接在 结果原创 2020-11-25 10:53:07 · 245 阅读 · 0 评论 -
leetcode1030. 距离顺序排列矩阵单元格
文章目录题目:1030. 距离顺序排列矩阵单元格基本思想1:层次遍历(bfs)基本思想2:自定义排序函数题目:1030. 距离顺序排列矩阵单元格给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c),满足 0 <= r < R 且 0 <= c < C。另外,我们在该矩阵中给出了一个坐标为 (r0, c0) 的单元格。返回矩阵中的所有单元格的坐标,并按到 (r0, c0) 的距离从最小到最大的顺序排,其中,两单元格(r1, c1) 和 (r2, c2) 之间的距离原创 2020-11-17 09:42:05 · 306 阅读 · 0 评论 -
leetcode406. 根据身高重建队列
文章目录题目:406. 根据身高重建队列基本思想:贪心题目:406. 根据身高重建队列假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例输入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]输出:[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]来源:力扣(Le原创 2020-11-16 11:09:57 · 296 阅读 · 0 评论 -
快速排序非递归实现/好未来笔试编程题
文章目录写在前面快排非递归写在前面好未来的笔试编程题的第二题快排非递归参考:点击链接基本思想:在利用递归排序时的流程是:先选一个基准元素,将小于基准元素的放在基准的左面,大于基准元素的放在基准的右面对移动好的数组的左边和右边分别递归排序那非递归其实就是利用数组保存待排序的子数组的左右边界vector<int> nums;//存放未排序的数组huafen//划分int Partition(int left, int right){ int flag = nums[le原创 2020-09-05 15:30:37 · 201 阅读 · 0 评论 -
leetcode215. 数组中的第K个最大元素/快排,堆排,优先队列
文章目录题目:215. 数组中的第K个最大元素基本思想1:快速排序题目:215. 数组中的第K个最大元素在未排序的数组中找到第 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 ≤ 数组的长度。来源:力扣(LeetCode)链接:h原创 2020-06-29 17:30:59 · 255 阅读 · 0 评论 -
leetcode16.最接近的三数之和/双指针
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).来源:力扣(LeetCode)链接:ht...原创 2019-12-23 20:27:11 · 161 阅读 · 0 评论 -
leetcode1387. 将整数按权重排序
我们将整数 x 的 权重 定义为按照下述规则将 x 变成 1 所需要的步数:如果 x 是偶数,那么 x = x / 2如果 x 是奇数,那么 x = 3 * x + 1比方说,x=3 的权重为 7 。因为 3 需要 7 步变成 1 (3 --> 10 --> 5 --> 16 --> 8 --> 4 --> 2 --> 1)。给你三个整数 lo...原创 2020-04-22 18:01:48 · 277 阅读 · 1 评论 -
堆排序算法
堆排序算法参考:堆排序用数组来存储堆首先,从第一个非叶子节点(下标:len / 2 - 1)开始,将初始堆调整成大顶堆然后将最大的元素和最后一个待排序的元素交换,将新的序列调整成大顶堆完整代码#include<bits/stdc++.h>using namespace std;void swap(int &a, int &b){ int ...原创 2020-02-08 17:21:08 · 127 阅读 · 1 评论 -
算法——分治算法(以快排为例)
分治算法思想将大问题转化成小问题,用递归的策略来解决问题分治算法的应用1.快速排序基本思想:选一个元素作为基准,将小于和大于该元素的值分别进行排序,最后,将小于该元素的那部分值,该元素,大于该元素的那部分值,合并,就是最终的结果。完整代码:/*快排递归算法*/#include<bits/stdc++.h>using namespace std;vector<...原创 2019-11-06 19:00:41 · 473 阅读 · 0 评论 -
剑指offer40.最小的K个数
题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。完整代码用选择排序的思想来实现class Solution {public: vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { //...原创 2019-11-05 20:06:51 · 205 阅读 · 0 评论