LC每日一题|20240630 - 494. 目标和

59 阅读1分钟

LC每日一题|20240630 - 494. 目标和

给你一个非负整数数组 nums 和一个整数 target

向数组中的每个整数前添加 '+''-' ,然后串联起所有整数,可以构造一个 表达式

  • 例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得到表达式 "+2-1"

返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。

提示:

  • 1 <= nums.length <= 20
  • 0 <= nums[i] <= 1000
  • 0 <= sum(nums[i]) <= 1000
  • -1000 <= target <= 1000

题目等级:Medium

解题思路

数据量不大,直接回溯解决。

AC代码

class Solution {
    var res = 0
    fun findTargetSumWays(nums: IntArray, target: Int): Int {
        dfs(0, 0, nums, target)
        return res
    }

    fun dfs(index: Int, cur: Int, nums: IntArray, target: Int) {
        if (index == nums.size) {
            if (cur == target) res++
            return 
        }
        dfs(index + 1, cur + nums[index], nums, target)
        dfs(index + 1, cur - nums[index], nums, target)
    }
}