自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 力扣3185 构成整天的下标对数目

因为题目要求i < j,所以只能从左到右进行遍历,因为record已经记录下了所有的模后结果,在我们遍历某个值的时候,这个值对应的可以和record[24-i]个数组成成对的下标。一边遍历,一遍维护record数组,具体来说,遍历到了3之后,下一次循环应该把record[3]的值减去1,表示我们记录的对24求模后的值等于3的数少了一个。例如,在我们遍历到值为3的时候,我们去找record[21],说明在当前这个位置的后面有record[21]个数是可以和我们当前的3组成成对的下标对的。

2024-10-22 16:29:40 142

原创 力扣3191&3192 使二进制数组全部等于1的最少操作次数 -- 贪心+位运算+动态规划思想 时间击败100%

考虑对于数组[0,1,1,1,0,0],如何让这个数组变为全是1?首先,对于第一个位置,因为这个位置是0,为了让这个位置变成1,我们让这个位置和后面的两个位置反转。这是必须做的。现在,数组变成[1,0,0,1,0,0],第一个位置就可以不用管了。数组看成是子数组[0,0,1,0,0],不断重复第一步,只要遇到0就反转,遇到1就跳过。最后计算得到的反转次数即可。这里有点像动态规划的寻找子问题的思想。为什么这样得到的答案是最少的?因为对于每一步,我们进行的行为都是。

2024-10-18 15:18:28 423

原创 力扣1884--鸡蛋掉落,两枚鸡蛋 通俗解法,包你看懂

这样,如果第一枚碎了,那么f必然在1到x-1层,我们从1楼开始,到2楼、3楼...,一直到x-1楼,每次都扔下第二枚鸡蛋,一旦鸡蛋碎了,那么f就等于让鸡蛋碎的那一层,这样,考虑最差情况,f恰好等于x-1,那么我们最多扔1+x-1次就可以确定f的值,可以满足最多扔x次。和上述类似的,此时,我们从x+1楼开始,到x+2楼,x+3楼...一直到x+(x-2)楼,最多要扔2+x-2次。为了保证x是最小,需要x+(x-1)+(x-2)+(x-3)+...+1>=n。假设我们最多需要扔x次,现在第一枚鸡蛋在x层扔下。

2024-10-14 15:33:27 294

原创 力扣3171.找到最近或最接近k的子数组--模板题(从O(n²)到O(nlogU))

很明显就是遍历所有的子数组,从 [0] 到 [0] ,从 [0] 到 [1] ,从 [0] 到 [2],从 [1] 到 [1] ,从 [1] 到 [2],从[2]到[2],得到的所有子数组的值和k进行或运算,假设数组元素的值分别是:1,3,4。所以,为了方便循环的计算,我们在遇到出现c&d=d这种情况,即or_num[i] | nums[j] 的时候,就可以不用再遍历当前这一层了,可以直接break掉,从而节省了运行的时间。我们每次更新or_num[i],都必然是让当前的这个or_num[i]变大。

2024-10-10 20:59:38 445

原创 力扣1227.飞机座位分配概率--数学递推

第二、站在上帝视角,对我们来说,他的正确的位置是一号位置(因为一号位置是a的,但是a现在在二号位置,我们可以理解为把a和b的位置对调了。还是一样的,把b当a,把c当b,把d当c,此时,就是只有a,b,c三个人的 情况下,c能坐到正确的位置的概率,这个概率不就是我们已经计算过的1/2嘛!2.坐到了第三个位置,此时,对c来说,绝对不可能再坐到自己的位置上了,这种情况发生的概率是1/3。1.坐到了第一个位置,此时是正确的位置,所有人都可以坐到正确的位置,这种情况发生的概率是1/3。我们称为a,b和c三个人。

2024-10-04 15:31:38 541 1

原创 数位DP--力扣2376.统计特殊数字

跟着灵神学的模板题,有一套完整的模板可以完美解决这种数位DP的问题其核心思想就是使用深度优先搜索,每次找到一个符号要求的特殊数字就加1在此基础上进行分类讨论使用四个参数来作为dfs的参数,分别是:1.i,表示当前遍历到了从左往右的第i位,i==0的时候是左起第一位,i==n的长度的时候是右起第一位2.mask,位运算,因为集合是可以表示为一个唯一的数的。例如,集合{2,0,3}可以表示为1101,其中,右起第1位为1表示0在集合中,右起第2位为0表示1不在集合中。

2024-09-21 16:26:44 724 1

原创 力扣2972 统计移除递增子数组的数目--枚举子数组

此时要注意,向左移的过程,i不能小于等于0,如果出现这种情况,说明当前这个nums[j]比递增序列的所有值都小,那么就只能ans+=1,认为是计算删除掉了0到j-1这一段。看过灵神的代码后,发现不需要执行ans+=1这种情况,因为如果i小于等于0了,那么此时i==-1,且不会再变化了,还是执行ans+=i+2是一样的+1,可以简化代码。这里本来我想取一个i_copy等于i的,后来发现不需要,因为j后面的那一段是递增的,如果当前这个j比i小,那么再往前走的时候必然也不存在一个j比当前的i大。

2024-07-11 17:07:46 425

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除