494. 目标和

一个人想着一个人 提交于 2020-11-20 16:18:27

题目描述

给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。

返回可以使最终数组和为目标数 S 的所有添加符号的方法数。

题解思路

1 递归思路,对于每次选择可以选择正数,或者负数,因此采用两次递归就能获取到两种情况的可能,间接实现了动态选择各种情况。

递归解题代码

public class DynamicSolution {

    private int count = 0;


    public int findTargetSumWays(int[] nums, int S) {

            if (nums == null || nums.length == 0) {
                return count;
            }
            goSolute(nums,0,0,S);
            return count;

    }


    public void goSolute(int[] nums,int index, int sum,int S){

        if (nums.length == index) {
            if (sum == S) {

                count++;
            }
        }else {
            goSolute(nums,index+1,sum+nums[index],S);
            goSolute(nums,index+1,sum-nums[index],S);

        }
    }

}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!