我目前已经完成了encodingbat,递归2中的splitArray问题。但是,查看我的代码时,我遇到了可视化代码的问题。我的代码如下:
public boolean splitArray(int[] nums) {
if (nums == null) {
return false;
}
return splitArray(nums, 0, 0, 0);
}
public boolean splitArray(int[] nums, int index, int sum1, int sum2) {
if(index >= nums.length){
return sum1 == sum2;
}
boolean sum1Split = splitArray(nums, index + 1, sum1 + nums[index], sum2);
boolean sum2Split = splitArray(nums, index + 1, sum1, sum2 + nums[index]);
if (sum1Split || sum2Split) {
return true;
}
return false;
}
提示是:
给定一个整数数组,可以将整数分为两组,以便两组的总和相同。每个int必须在一个组中或在另一个组中。编写一个递归帮助器方法,该方法将使用您喜欢的任何参数,然后从splitArray()
对递归帮助器进行初始调用。 (无需循环。)
让我们说我们有一个[5, 2, 3]
(真)和[5, 2, 2,]
(假)的数组。使用回溯,我们创建了一个数组值树。我知道如何为sum1创建树,但是,我不知道程序在哪里比较sum2,或者为什么我们的[5, 2, 3]
数组为true而[5, 2, 2]
为false。
任何帮助,想法或资源将不胜感激。