Java 群丛问题
有一段时间我一直在努力解决下面的问题 给定一个整数数组,是否可以选择一组整数,以使该组与给定目标求和,并附加此约束:如果数组中有相邻且值相同的数字,则必须全部选择,或不选择任何一个。例如,对于数组{ 1, 2, 2,2, 5, 2 },中间的所有三个2都必须被选择或不被选择,都作为一个组。(一个循环可用于查找相同值的范围) 代码在 失败的测试用例场景:Java 群丛问题,java,Java,有一段时间我一直在努力解决下面的问题 给定一个整数数组,是否可以选择一组整数,以使该组与给定目标求和,并附加此约束:如果数组中有相邻且值相同的数字,则必须全部选择,或不选择任何一个。例如,对于数组{ 1, 2, 2,2, 5, 2 },中间的所有三个2都必须被选择或不被选择,都作为一个组。(一个循环可用于查找相同值的范围) 代码在 失败的测试用例场景: groupSumClump(0, {2, 4, 4, 8}, 14) → false -->NegativeArraySizeExcep
groupSumClump(0, {2, 4, 4, 8}, 14) → false -->NegativeArraySizeException
groupSumClump(0, {8, 2, 2, 1}, 9) → true false --> X
我真的尽了我最大的努力让它工作,但遗憾的是它总是失败。
请需要您的帮助,以便专家解决此问题
如果您能抽出几分钟来研究我的问题,并帮助我实现所需的解决方案,我将非常感激您。方法“汇总”逻辑真是一团糟。
在这里,它应该类似于函数“f”:
快速修复您的代码:
class Demo {
public static void main(String args[]) {
Demo.groupSumClump(0, new int[] { 2, 4, 4, 8 }, 14);
Demo.groupSumClump(0, new int[] {8, 2, 2, 1}, 9);
}
public static void groupSumClump(int start, int[] nums, int target) {
start = 0;
nums = adjacents(start, nums);
for (int a_number = 0; a_number < nums.length; a_number++) {
System.out.println("Array is " + nums[a_number]);
}
summate(nums, 0, 0, target);
System.out.println(false);
}
public static int[] adjacents(int start, int[] nums) {
int sum = 0;
for (int i = 0; i < nums.length - 1; i++) {
if (nums[i] == nums[i + 1]) {
sum += nums[i] + nums[i + 1];
nums[i] = sum;
nums[i + 1] = 0;
}
}
return nums;
}
static void check(int sum, int target) {
if (sum == target) {
System.out.println(true);
System.exit(0);
}
}
static void summate(int[] numbers, int index, int sum, int target) {
check(sum, target);
if (index == numbers.length) {
return;
}
summate(numbers, index + 1, sum + numbers[index], target);
check(sum, target);
summate(numbers, index + 1, sum, target);
check(sum, target);
}
}
类演示{
公共静态void main(字符串参数[]){
groupSumClump(0,新的int[]{2,4,4,8},14);
groupSumClump(0,新的int[]{8,2,2,1},9);
}
公共静态void groupSumClump(int start,int[]nums,int target){
开始=0;
nums=邻接(开始,nums);
for(int a_number=0;a_number
方法“求和”逻辑真是一团糟。
在这里,它应该类似于函数“f”:
快速修复您的代码:
class Demo {
public static void main(String args[]) {
Demo.groupSumClump(0, new int[] { 2, 4, 4, 8 }, 14);
Demo.groupSumClump(0, new int[] {8, 2, 2, 1}, 9);
}
public static void groupSumClump(int start, int[] nums, int target) {
start = 0;
nums = adjacents(start, nums);
for (int a_number = 0; a_number < nums.length; a_number++) {
System.out.println("Array is " + nums[a_number]);
}
summate(nums, 0, 0, target);
System.out.println(false);
}
public static int[] adjacents(int start, int[] nums) {
int sum = 0;
for (int i = 0; i < nums.length - 1; i++) {
if (nums[i] == nums[i + 1]) {
sum += nums[i] + nums[i + 1];
nums[i] = sum;
nums[i + 1] = 0;
}
}
return nums;
}
static void check(int sum, int target) {
if (sum == target) {
System.out.println(true);
System.exit(0);
}
}
static void summate(int[] numbers, int index, int sum, int target) {
check(sum, target);
if (index == numbers.length) {
return;
}
summate(numbers, index + 1, sum + numbers[index], target);
check(sum, target);
summate(numbers, index + 1, sum, target);
check(sum, target);
}
}
类演示{
公共静态void main(字符串参数[]){
groupSumClump(0,新的int[]{2,4,4,8},14);
groupSumClump(0,新的int[]{8,2,2,1},9);
}
公共静态void groupSumClump(int start,int[]nums,int target){
开始=0;
nums=邻接(开始,nums);
for(int a_number=0;a_number
能否请您提供用java编写的现有代码逻辑的修复程序。我想在不做太多修改的情况下对代码进行优化。我必须在不使用递归技术的情况下完成求和。请为我现有的java代码逻辑提供不使用递归逻辑的修复程序。当然,您在代码中也使用了递归。Read can您可以提供用java编写的现有代码逻辑的修复程序吗?我想在不做太多修改的情况下优化我的代码。我必须在不使用递归技术的情况下完成求和。请为我现有的java代码逻辑提供不使用递归逻辑的修复程序。好吧,您在代码中也使用了递归。阅读