刷题
leetcode题目
MLGDOU
这个作者很懒,什么都没留下…
展开
-
每日一题:Leetcode153.寻找旋转排序数组中的最小值
它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的。原数组为 [0,1,2,4,5,6,7] ,旋转 4 次得到输入数组。原数组为 [11,13,15,17] ,旋转 4 次得到输入数组。原数组为 [1,2,3,4,5] ,旋转 3 次得到输入数组。思路: 分析题目可知,排序好的数组旋转符合二段性。的数组,预先按照升序排列,经由。你必须设计一个时间复杂度为。原创 2023-12-04 18:39:31 · 420 阅读 · 2 评论 -
每日一题:Leetcode611.有效三角形的个数
先对数组进行排序,先固定最大的元素,利用双指针left从0开始,right从最大元素前一个开始,通过判断二者之和是否大于最大元素,从而实现计数。解法一:暴力求解利用三层循环从前往后找三个值,依次判断。,返回其中可以组成三角形三条边的三元组个数。2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)给定一个包含非负整数的数组。解法二:利用单调性和双指针。原创 2023-11-16 15:06:57 · 475 阅读 · 3 评论 -
每日一题:Leetcode15.三数之和
找一个固定值作为target,利用双指针从target的位置+1到尾找和等于-target的两个数,target依次向后遍历直到结尾,如果target值大于0,则停止循环(因为三个数都为正和不可能为0)1.通过stl容器set/unordered_set实现去重操作,找出所有的可能结果然后放入set/unordered_set中,会自动帮你去掉重复的结果。2.因为数组是排好序的,我们可以判断i,left,right位置的值是否等于其前一个元素的值来手动去重,具体看我代码操作。唯一可能的三元组和为 0。原创 2023-11-18 12:00:00 · 391 阅读 · 1 评论 -
每日一题 2023/11/12 leetcode283.移动零
移动到数组的末尾,同时保持非零元素的相对顺序。,必须在不复制数组的情况下原地对数组进行操作。,编写一个函数将所有。原创 2023-11-12 21:44:48 · 434 阅读 · 4 评论 -
每日一题:Leetcode525.连续数组
思路:将题目中0化成-1,求最长连续数组即求最长子数组为0的数组,和上一篇文章一样,哈希表中记录最早的子数组和的下标,如果当前位置的和在哈希表中存在,则能求出其长度。[0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。[0, 1] 是具有相同数量 0 和 1 的最长连续子数组。的最长连续子数组,并返回该子数组的长度。, 找到含有相同数量的。原创 2023-12-16 13:29:23 · 97 阅读 · 0 评论 -
位运算:消失的两个数字
思路 :我们将从1-n出现的数和nums中出现的数合并到一起,可以发现除了缺失的两个数(我们记为a,b)只出现了一次外,其余每个数都出现了两次,根据异或运算的性质,我们通过循环找到这两个数异或的结果中为1的比特位,然后把所有异或的数分成两组,两组之内分别异或得到最终的两个结果即为消失的数字。给定一个数组,包含从 1 到 N 所有的整数,但其中缺了两个数字。你能在 O(N) 时间内只用 O(1) 的空间找到它们吗?,那么我们把这些数异或后得到的结果即为a和b异或的结果。以任意顺序返回这两个数字均可。原创 2023-12-22 19:57:05 · 422 阅读 · 0 评论 -
Leetcode每日一题:1599.经营摩天轮的最大利润
2. 3 位游客抵达,4 位在等待的游客登舱,其他 3 位等待,摩天轮轮转。1. 8 位游客抵达,4 位登舱,4 位等待下一舱,摩天轮轮转。当前利润为 4 * $5 - 1 * $6 = $14。3. 最后 3 位游客登舱,摩天轮轮转。当前利润为 11 * $5 - 3 * $6 = $37。注意,如果有超过 4 位游客在等摩天轮,那么只有 4 位游客可以登上摩天轮,其余的需要等待。大体思路:每走一轮计算一次利润,并更新最大利润值,直到把没人等待。轮转 3 次得到最大利润,最大利润为 $37。原创 2024-01-01 13:17:18 · 634 阅读 · 0 评论 -
位运算:Leetcode137.只出现一次的数字(2)
我们要找的数记为ret,所有数该位求和结果%3得到的结果与ret相同,如果结果为1,我们就将该位改为1,如果为0则改为0,最后便能求得要找的数。,这是我第一次犯下的错误,用count==1来判断结果发现怎么都不对。第一次遍历求出每个元素出现的次数,第二次遍历找出出现次数为1的元素。tips:map和set里是不允许有重复元素的,就意味着。我们知道每一位相加的结果无非就下面四种情况。请你找出并返回那个只出现了一次的元素。外,其余每个元素都恰出现。思路1:最先想到的肯定是。原创 2023-12-21 17:35:24 · 739 阅读 · 1 评论 -
常见位运算总结
1.确定一个二进制第x位是0还是12.将一个数n的二进制表示的第x位修改成13.将一个数n的二进制表示的第x位修改成04.提取一个数n二进制表示最右侧的1(lowbit)-n是n按位取反再加15.将n最右侧的1变为0。原创 2023-12-19 18:41:01 · 396 阅读 · 2 评论 -
Leetcode每日一题:1154.一年中的第几天
取出年月日之后,用一个数组存每一个月的天数(这里我们选择开大小为13的,第一个索引为0的位置存0,这样月份就和索引一一对应了)。接着判断是否为闰年,若为闰年则二月份对应的数组元素加1,为29天。接着就是循环遍历轻松解决了。这里使用了string类中的substr函数,第一个参数表示从第几位开始取,第二个参数表示取几位。2023年最后一篇博客,祝所有看到这篇博客的人2024好运爆棚。思路:先把字符串中的年月日取出来并转化成整形。返回该日期是当年的第几天。给定日期是2019年的第九天。跨年之夜,做一道日历题。原创 2023-12-31 12:39:12 · 731 阅读 · 2 评论 -
每日一题:Leetcode560.和为K的子数组(前缀和+哈希)
优化:采用哈希表记录前缀和,把找和为k的子数组转化为在哈希表中找和为presum-k的前缀和数组,如果哈希表中存在则将结果ret加上该前缀和所对应的哈希值(即出现的次数),再将该位置的前缀和放入哈希表中。注意特殊情况,如果presum==k则将ret++。思路:遍历数组使用一个变量presum记录当前节点的前缀和,用另一个指针去遍历该位置前面的数组,找到和为k的子数组,但是这样的话时间复杂度就是o(n^2)子数组是数组中元素的连续非空序列。原创 2023-12-12 16:55:31 · 671 阅读 · 0 评论