Leetcode 494 蛮力递归解决方案将变量作为属性使用,但当我将其作为参数传递时不起作用
Posted
技术标签:
【中文标题】Leetcode 494 蛮力递归解决方案将变量作为属性使用,但当我将其作为参数传递时不起作用【英文标题】:Leetcode 494 Brute force recursive solution works with a variable as a attribute but doesn't work when I pass it as parameter 【发布时间】:2021-12-26 14:11:26 【问题描述】:我已在此处附上解决方案。第一个有效,但第二个无效。唯一的变化是我将结果变量作为具有全局范围的属性移动到了辅助函数中的参数。
class Solution
int result = 0;
public int findTargetSumWays(int[] nums, int S)
if (nums == null || nums.length == 0) return result;
helper(nums, S, 0, 0);
return result;
public void helper(int[] nums, int target, int pos, long eval)
if (pos == nums.length)
if (target == eval) result++;
return;
helper(nums, target, pos + 1, eval + nums[pos]);
helper(nums, target, pos + 1, eval - nums[pos]);
class Solution
public int findTargetSumWays(int[] nums, int S)
int result = 0;
if (nums == null || nums.length == 0) return result;
helper(nums, S, 0, 0, result);
return result;
public void helper(int[] nums, int target, int pos, long eval, int result)
if (pos == nums.length)
if (target == eval) result++;
return;
helper(nums, target, pos + 1, eval + nums[pos], result);
helper(nums, target, pos + 1, eval - nums[pos], result);
【问题讨论】:
【参考方案1】:原语(如您的情况下的 int )在 Java 中是按值传递的。在您的第一个解决方案中,它是一个类属性。在第二种解决方案中,值在 findTargetSumWays() 中声明,其值在 helper() 中修改。这不能像你实现它的方式那样工作
而不是:
int i=0;
modifyValue(i);
应该是:
int i=0;
i = modifyValue(i);
【讨论】:
快速跟进:这意味着属性或类字段作为参考传递,就像在更新属性结果的第一个解决方案中一样?以上是关于Leetcode 494 蛮力递归解决方案将变量作为属性使用,但当我将其作为参数传递时不起作用的主要内容,如果未能解决你的问题,请参考以下文章