给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的 任意个数之和 等于 target,并打印出所有结果的索引。

给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的 任意个数之和 等于 target,并打印出所有结果的索引。

例如: nums = [1,5,8,17,29,33,39,11,16] ,target = 33
结果1:5 ,结果2:3,8,…

public class ArrayListTest {
    private static final int[] Data = {1,5,8,17,29,33,39,11,16};
    private static final int target =29;
    public static void main(String[] args) {
        GetAllSubsets example = new GetAllSubsets();
        example.populateSubset(Data, 0, new int[Data.length], 0, target);
    }
}
class GetAllSubsets {

    public void populateSubset(final int[] data, int fromIndex,
                               final int[] result, final int resultLen, final int target) {
        if (target == 0) {
            printResult(Arrays.copyOf(result, resultLen));
            return;
        }

        while (fromIndex < data.length && data[fromIndex] > target) {
            fromIndex++;
        }

        while (fromIndex < data.length && data[fromIndex] <= target) {
            result[resultLen] = fromIndex;
            populateSubset(data, fromIndex + 1, result, resultLen + 1, target
                    - data[fromIndex]);
            fromIndex++;
        }
    }

    private void printResult(int[] copyOf) {
        StringBuilder sb = new StringBuilder();
        for (Integer i : copyOf) {
            sb.append(i).append(",");
        }
        System.out.println(sb.deleteCharAt(sb.length() - 1).toString());
    }
}

例:nums = [1,5,8,17,29,33,39,11,16] ,target = 33 输出:
1,3,7
3,8
5

请问大家这个算法哪里出错了 为什么结果不全。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值