leetcode377题
当 if(nums[j] <= i)
时 不能直接 memo[i] += memo[i - nums[j]];
if(nums[j] <= i){
if(memo[i] == -1 || memo[i - nums[j]] == -1 ||
(long long)memo[i] + (long long)memo[i - nums[j]] > INT_MAX)
memo[i] = -1;
else memo[i] += memo[i - nums[j]];
}
开辟空间的时候,很容易开辟漏一个空间
一个极其弱智的错误🙅
vector<int> result = {n+1, 0};
不是开辟一个有n+1个空间的数组,而是开辟含有两个元素的数组,每个元素值为 n+1和0,
正确的写法应该用圆括号vector<int> result (n+1, 0);