- 博客(10)
- 收藏
- 关注
原创 【动态规划】leetcode零钱兑换2
请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回。表示不同面额的硬币,另给一个整数。
2023-11-10 23:47:57
69
1
原创 【动态规划】【计蒜客】硬币找零
思路:对于每个面额的硬币,可以选择用或者不用,在dp数组中,下标表示余额(或者说是背包问题中背包的剩余容量),dp[i]的值就是硬币的个数,所以我们要求的最小的硬币个数。,dp[j]表示不使用当前面额的硬币时所需的硬币数,dp[j-a[i]]表示使用当前面额时所需的硬币数,每次遍历都取二者之中较小的。
2023-10-21 20:13:51
49
1
原创 【动态规划】【计蒜客】非法二进制数
相比于非法二进制数,合法二进制数有规律可循,所以可以用总数减去合法二进制数的数量来求非法二进制数的数量。合法二进制数可以分为末位是1和末位是0两种情况。对于一个i位的二进制数,当末位是1时,那么前i-1位的末位必定是0(否则就不是合法数了),所以。下面对dp[i][0]和dp[i][1]以及dp[i][0]+dp[i][1]取模也是同样的道理;由于a[n]-(dp[i][0]+dp[i][1])可能是个负数,所以这里加个mod再取模。当末位是0时,前i-1位末位可以是1也可以是0,所以。
2023-10-21 19:26:09
71
1
原创 [数组】两数之和
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。整数,并返回它们的数组下标。你可以按任意顺序返回答案。,请你在该数组中找出。
2023-09-26 21:46:34
34
1
原创 【计蒜客】摇钱树
注意unsigned long long int 比long long int表示的范围要大,前者能表示-2^63+1~2^63-1,后者能表示的范围是0~2^64-1,与题目中的范围相符,这个问题导致我浪费了很多时间。
2023-09-21 22:13:05
191
原创 [leecode]复写零
调用函数后,输入的数组将被修改为:[1,0,0,2,3,0,0,4],请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。注意:请不要在超过该数组长度的位置写入元素。调用函数后,输入的数组将被修改为:[1,2,3]进行上述修改,不要从函数返回任何东西。给你一个长度固定的整数数组。
2023-09-20 16:10:45
37
1
原创 [滑动窗口】leecode爱生气的书店老板
先找到不用秘密技巧时顾客满意数量,再找出使用技巧后增加的满意顾客数量的最大值,这里滑动窗口的移动只用了一重循环,通过原始窗口中increase的数量减去左侧边界(不再受影响),加上右侧边界(即将受影响)来控制窗口的移动,并更新Increase的最大值,时间复杂度将为了O(n).当书店老板生气时,那一分钟的顾客就会不满意,若老板不生气则顾客是满意的。用了两重循环,时间复杂度是O(n^2),当数量很多的时候时间开销很大。书店老板知道一个秘密技巧,能抑制自己的情绪,可以让自己连续。有一个书店老板,他的书店开了。
2023-09-15 17:42:54
36
1
原创 滑动窗口寻找满足条件的最大子数组
初始时左(L)和右(R)指针在初始位置,右指针向右滑,当左右指针间的子序列满足条件时,右指针继续向右滑,同时更新结果(max);当左右指针间的序列不满足条件时,左指针向右滑,直到两指针之间的序列重新满足条件;类似的方法,当左右指针间的序列满足条件时,左指针向右滑,缩小窗口,同时更新结果(min),直到两指针之间的序列不满足要求,此时右指针向右滑,使两指针间的序列重新满足要求,直到右指针到达序列结尾。数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。
2023-09-13 15:48:04
83
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人