leetcode

    xiaoxiao2021-03-26  24

    题意:

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

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

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

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

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

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

    递归时参数的变化:树搜索的层数加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); } }

    转载请注明原文地址: https://ju.6miu.com/read-658402.html

    最新回复(0)