【发布时间】:2014-07-28 21:17:57
【问题描述】:
给定一个整数数组,是否可以将整数分成两组,使两组的和相同。每个 int 必须在一个组中。编写一个递归帮助器方法,它接受你喜欢的任何参数,并从 splitArray() 对你的递归帮助器进行初始调用。 (不需要循环。)
这是我试图解决的编码问题。我真的被卡住了,所以我找到了一个解决方案,但我对一行的目的感到困惑,对最终的 return 语句正在做什么完全感到困惑。感谢您的帮助!
public boolean splitArray(int[] nums) {
return splitArrayHelper(nums, 0, new int[nums.length], 0, 0, new int[nums.length], 0, 0);
}
private boolean splitArrayHelper(int[] nums, int n, int[] split1, int s1, int t1, int[] split2, int s2, int t2) {
if (n == nums.length)
return t1 == t2; //returns true or false
split2[s2] = split1[s1] = nums[n]; // What is the purpose of this line?
return
splitArrayHelper(nums, n + 1, split1, s1 + 1, t1 + nums[n], split2, s2, t2) ||
splitArrayHelper(nums, n + 1, split1, s1, t1, split2, s2 + 1, t2 + nums[n]);
} //I don't know what this return statement is doing. How is the or statement decided?
【问题讨论】:
-
代码真的很混乱。变量命名不是很清楚。但是,我可以看到该算法正在使用递归来解决这个问题。或“||”在 return 语句中简单地或递归调用返回的两个布尔值。
-
对不起。你对退货的解释我并不完全清楚。
标签: java arrays boolean return