排序
文章平均质量分 56
Lev_i
随便记住我,然后忘了吧
展开
-
581. 最短无序连续子数组
581. 最短无序连续子数组 贴个题目: 贴个示例: 解题思路: 1、 排序+对比数组: 题目要求我们找最小的连续子数组,,而且这个最小的连续子数组排序之后能够让原数组升序,那么我们可以复制这个数组numcpy,然后进行排序升序,让result等于数组长度,从头遍历剪掉头,从后遍历剪掉尾,最后得判断result,如果result小于0,那就说明整个数组已经排好序了,所以返回0,大于0就返回result。 2、代码: //qsort的compare函数:升序排序 int compare(const voi原创 2021-08-06 14:21:05 · 159 阅读 · 0 评论 -
1877. 数组中最大数对和的最小值
1877. 数组中最大数对和的最小值 贴个题目: 贴个示例: 解题思路: 吐槽一下:经典我看不懂题目想让我干嘛?但是看懂了又很简单?什么叫做:“最大数对和最小”? 后来结合示例想一想,应该是让数对的组成平均的前提下,求出最大数对和。 什么叫做数对组成平均呢? 我是这么理解的,就是数对比较对称,看示例2大概就能明白我的意思。 那么搞清楚题意之后,其实就很简单啦: 先排序,然后排序,然后求关于数组中间对称的数对和最大值 贴代码: int cmp(const void *a,const void *b)原创 2021-07-20 19:14:39 · 56 阅读 · 0 评论 -
645. 错误的集合
645. 错误的集合 贴个题目: 贴个示例: 解题思路: 哈希表法: 首先来读一下题目:题目意思就是我本来有一个包含1~n的数组,顺序不定,但是呢被一个集合打乱且复制其中一个元素,形成了新的数组 请我们找出这个重复元素和缺失的元素 那么由上可以得出,新建一个数组reNums,长度为2: int *reNums=(int *)malloc(sizeof(int)*2) *returnSize=2 然后用哈希表,统计原数组的元素 重复元素个数是2,没有出现的元素个数应该为0 根据这个我们就可以找到那重原创 2021-07-15 16:29:38 · 64 阅读 · 0 评论 -
1846. 减小和重新排列数组后的最大元素
1846. 减小和重新排列数组后的最大元素 前言: 这是一道不应该是中等题的简单题,因为确实常规方法也能做出来 我就用了两种方法,一种就是排序+贪心,另外一种就是计数(哈希?)+贪心 贴个题目: 代码示例 解题思路 第一种:排序+贪心算法 首先我们先排序,然后根据题目说第一个元素必须为1,因此有 arr[0]=1 紧接着因为求的是最大值,根据贪心算法,我们让每一元素都满足以下条件即可: abs(arr[i] - arr[i - 1]) <= 1 最后返回最后一个元素就可以了 第一种代码:原创 2021-07-15 10:55:42 · 89 阅读 · 0 评论 -
274. H指数
274. H指数 题目简介: 题目示例: 提示:如果h有多个可能的值,h指数就是其中最大的一个 解题思路: 有一点值得注意的是:h不一定存在于数组中,下面举个例子 数组:[4, 0, 6, 1, 5], 它得出来的h指数是:3,h在这里并不是数组的元素 有了这一点做铺垫,我们就大概感觉到,h这个数大概在数组元素中排中间位置,而且根据示例中的提示:h是最大的一个,就知道,应该将数组排序之后,从大到小遍历,找出h 那么,h又满足什么条件呢? 假设数组有N个数组,已经是升序,那么先让h=0原创 2021-07-11 22:29:37 · 61 阅读 · 0 评论