- 博客(5)
- 收藏
- 关注
原创 LeetCode每日一题#377
对于任意一个dp[i],我们遍历nums,如果nums[j]<=i,我们就可以将dp[i-nums[j]]的值加到dp[i]中。说明:我第一眼看到这个题目的时候,想当然的以为跟昨天的题一样,要用回溯来做。但是我把昨天的代码扒下来套的时候发现,只用昨天的那个模板,只能求出部分解,例如示例一,我只能求出(1,1,1,1),(1,1,2),(1,3),(2,2)。在内层的循环中,我们遍历了整个数组,1和3都有可能作为该组合的结尾。这里的i-nums[j]就代表以nums[j]为结尾的和为i的组合。
2024-04-22 17:42:01
439
4
原创 LeetCode每日一题#216
这道题我们设定void dfs(int num,int k, int n, int*tmp),其中num是1-9的某一个数,n,k表示我还差k个数构成和为n的序列。如果此时num=9,k=1,n=9,那么dfs中的参数分别为10,0,0,tmp,显然tmp中的数组序列已经满足了题目要求。在[1,9]范围内使用4个不同的数字,我们可以得到的最小和是1+2+3+4 = 10,因为10 > 1,没有有效的组合。这里面有个关键点,if(num>9)这个判断语句必须在if(k==0&&n==0)之后。
2024-04-21 10:06:45
503
3
原创 LeetCode每日一题#39
(因为我的CombineArr_size设置的时全局变量,因此需要减一,码友们也可以将其作为dfs的参数,这样就不会有减一这个操作了)我们可以定义一个搜索函数dfs(int*candidates, int candidates_size,int target ,int idx),其中candidates为题目中给定的数组,candidates_size为candidates的大小,target表示与题目给定的target的‘距离’,当距离为0时,说明搜索到的元素为答案。7 也是一个候选, 7 = 7。
2024-04-20 23:44:20
671
原创 LeetCode每日一题#1883
最后在比较 f[n][j]≤hoursBeforef[n][j] \leq \textit{hoursBefore}f[n][j]≤hoursBefore 时,我们也需要将左侧减去 eps\text{eps}eps 或将右侧加上 eps\text{eps}eps,再进行比较。不跳过任何休息时间,你将用 (7/2 + 1/2) + (3/2 + 1/2) + (5/2 + 1/2) + (5/2) = 11.5 小时才能抵达会议现场。注意,这意味着与不跳过任何休息时间相比,你可能在不同时刻到达接下来的道路。
2024-04-20 21:54:27
936
3
原创 LeetCode每日一题#2007
说明:chaged数组中的元素取值范围在0~100000之间,所以我们可以将changed中的元素存在一个大小为100001的数组hash中。(可能有人会有疑问,就是数组中的元素范围在0~100000,为什么不把这个哈希数组的容量扩张成200002,这是因为changed中的元素是original数组中的元素乘2得来的,所以说original中元素范围在0~50000,因此我们在changed中如果遍历到大于50000的数字,直接返回NULL就行了)- 将 1 乘以 2 ,得到 1 * 2 = 2。
2024-04-18 14:45:24
360
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人