Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 群丛问题_Java - Fatal编程技术网

Java 群丛问题

Java 群丛问题,java,Java,有一段时间我一直在努力解决下面的问题 给定一个整数数组,是否可以选择一组整数,以使该组与给定目标求和,并附加此约束:如果数组中有相邻且值相同的数字,则必须全部选择,或不选择任何一个。例如,对于数组{ 1, 2, 2,2, 5, 2 },中间的所有三个2都必须被选择或不被选择,都作为一个组。(一个循环可用于查找相同值的范围) 代码在 失败的测试用例场景: groupSumClump(0, {2, 4, 4, 8}, 14) → false -->NegativeArraySizeExcep

有一段时间我一直在努力解决下面的问题

给定一个整数数组,是否可以选择一组整数,以使该组与给定目标求和,并附加此约束:如果数组中有相邻且值相同的数字,则必须全部选择,或不选择任何一个。例如,对于数组{ 1, 2, 2,2, 5, 2 },中间的所有三个2都必须被选择或不被选择,都作为一个组。(一个循环可用于查找相同值的范围)

代码在

失败的测试用例场景:

 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代码逻辑提供不使用递归逻辑的修复程序。好吧,您在代码中也使用了递归。阅读