LeetCode刷题
belike..
这个作者很懒,什么都没留下…
展开
-
LC-442-数组中重复的数据
问题描述:给你一个长度为 n 的整数数组 nums ,其中 nums 的所有整数都在范围 [1, n] 内,且每个整数出现 一次 或 两次 。请你找出所有出现 两次 的整数,并以数组形式返回。你必须设计并实现一个时间复杂度为 O(n) 且仅使用常量额外空间的算法解决此问题。解题思路:不太懂,懂了来写代码实现:示例:在这里插入输入:nums = [4,3,2,7,8,2,3,1]输出:[2,3]输入:nums = [1,1,2]输出:[1]输入:nums = [1]输出:[]原创 2022-01-06 14:02:55 · 573 阅读 · 0 评论 -
LC-453-最小操作使数组元素相等
问题描述:给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。解决思路:正向思维:每次给n-1个数组元素进行+1操作反向思维:每次给1个数组元素进行-1操作先将数组从小到达进行排序,前面的大数减去小数,就是当前最小要操作的数,依次将要操作的次数相加就得到了一共需要的次数。代码实现:int com(const void *a,const void *b) { return *(int *)a - *(int *)b;原创 2022-01-06 13:55:03 · 259 阅读 · 0 评论 -
LC-665-非递减
问题描述:给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中任意的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。解题思路:有的时候,改前可以,改自己可以,改后面的也可以。在nums[i]<nums[i-1]的情况下,有两种情况:(1)i==1||nums[i]>=nums[i-2],这时改动nums[i-1]=nums[i原创 2022-01-06 12:19:03 · 228 阅读 · 0 评论 -
LC-283-移动零
问题描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。解题思路:将现有的数组元素中不为0的值重新放到数组中,后面补上相应的0的个数就实现了,太妙了这解法代码实现:示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]void moveZeroes(int* nums, int numsSize){ int i=0; int j=0; for(int i=0;i<numsSize;i++)原创 2022-01-06 12:07:19 · 566 阅读 · 0 评论 -
LC-448-找到数组中消失的数字
问题描述:给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。解题思路:这个真没看懂,迷惑的很呀解题方法:/** * Note: The returned array must be malloced, assume caller calls free(). */int* findDisappearedNumbers(int* nums, int numsSiz原创 2022-01-05 00:34:15 · 371 阅读 · 0 评论 -
LC-274-H指数
问题描述:给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (n 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。且其余的 n - h 篇论文每篇被引用次数 不超过 h 次。例如:某人的 h 指数是 20,这表示他已发表的论文中,每篇被引用了至少 20 次的论文总共有 20 篇。提示:如果原创 2022-01-05 00:29:40 · 72 阅读 · 0 评论 -
LC-697-数组的度
问题描述:给定一个非空且只包含非负数的整数数组 nums,数组的 度 的定义是指数组里任一元素出现频数的最大值。你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。解题思路:关于哈希表,说实话没看懂,等我学会了来写解题方法:struct HashTable { int key; int num, add1, add2; UT_hash_handle hh;};int findShortestSubArray(int* nums,原创 2022-01-05 00:22:21 · 261 阅读 · 0 评论 -
LC-645-错误集合
问题描述:集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。给定一个数组 nums 代表了集合 S 发生错误后的结果。请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。解题思路:定义两个局部变量pre和cur,pre初值为0,cur初值记录当前数组里的值,从数组的第一个元素开始遍历,如果cur和pre相等时,说明数组中发现重复的数字,用新开辟的errNums[0]原创 2022-01-05 00:19:10 · 271 阅读 · 0 评论 -
LC-628-三个数的最大乘积
问题描述:给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。解决思路:通过一次遍历,找出max1,max2,max3,min1,min2,三个数相乘,若数组中全为正数,则找出最大的三个数相乘即为最大,若全为负数,则也是找出最大的三个相乘即为最大,当有正有负时,则,需要找出最小的和次小的,以及一个最大的正数,相乘可能会产生最大,因此,要这样找出这些值。解决方法:int maximumProduct(int* nums, int numsSize){ in原创 2022-01-02 12:52:22 · 145 阅读 · 0 评论 -
LC-495-提莫攻击
问题描述:在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。当提莫攻击艾希,艾希的中毒状态正好持续 duration 秒。正式地讲,提莫在 t 发起发起攻击意味着艾希在时间区间 [t, t + duration - 1](含 t 和 t + duration - 1)处于中毒状态。如果提莫在中毒影响结束 前 再次攻击,中毒状态计时器将会 重置 ,在新的攻击之后,中毒影响将会在 duration 秒后结束。给你一个 非递减 的整数数组原创 2022-01-02 12:44:26 · 86 阅读 · 0 评论 -
LC-485-最大连续1的个数
题目:给定一个二进制数组, 计算其中最大连续 1 的个数。解决思路:方法一:将数组遍历,flag标志位有1遍记录,遇到0则清0,mflag用来记录flag里面的最大值,这样就可以找出最大连续为1的个数解决方法:int findMaxConsecutiveOnes(int* nums, int numsSize){ int flag=0;//标志位 int mflag=0;//最大标志位 for(int i=0;i<numsSize;i++) {原创 2022-01-02 12:24:46 · 158 阅读 · 0 评论 -
LC-414-第三大数
题目: 给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。解决思路:方法一:先将数组中的数进行有序的排列,然后循环比较到第三个便是第三大数方法二:遍历数组,用a,b,c记录大,中,小三值,初始化时,均初始化为数组最小值的元素,视作无穷小,对于数组中的元素num:若num>a,则c=b,b=a,a=num,这个过程有点像num插入到有序集合,并删除有序集合中最小的那个值若b<num<a,则c=b,b=num,b替换成num,a保持不变若b&原创 2021-10-13 21:11:13 · 146 阅读 · 0 评论