leetcode_middle_15_494. Target Sum

来源:互联网 发布:微纳制造技术 知乎 编辑:程序博客网 时间:2024/06/04 23:28

题意:

给一个目标数和一个非负整数数组,给数组的每一个数正号或者符号,使这一列数运算的到目标数。返回添加符号的可能种数。
分析:

本来数学推导推了半天,但是无论推成什么样不可绕过的都是搜索怎么搜,遍历怎么完成。所以那些推到全没用,因为是+,-两种有限的可能,我们考虑深搜(像二叉树一样)。

深搜用递归完成,注意深搜递归的几个要素:

参数:数组本身一定要传,目标数,树已经搜索的层数(确定搜索什么时候结束)。

初始实参:数组本身,目标数,树已经搜索的层数

结束条件:树已经搜索的层数到达数组长度

递归时参数的变化:树搜索的层数加1

ublic class Solution {    int count = 0;        public int findTargetSumWays(int[] nums, int S) {        helper(nums, S, 0);        return count;    }        public void helper(int[] arr, int target, int n){        if(n == arr.length){  //先来递归结束条件:深搜到底            if(target == 0){  //必须是恰恰搜索完的时候达到目标才算                count++;            }            return;        }                helper(arr, target + arr[n], n + 1);        helper(arr, target - arr[n], n + 1);    }}



0 0
原创粉丝点击