LC每日一题|20240630 - 494. 目标和
给你一个非负整数数组
nums和一个整数target。向数组中的每个整数前添加
'+'或'-',然后串联起所有整数,可以构造一个 表达式 :
- 例如,
nums = [2, 1],可以在2之前添加'+',在1之前添加'-',然后串联起来得到表达式"+2-1"。返回可以通过上述方法构造的、运算结果等于
target的不同 表达式 的数目。
提示:
1 <= nums.length <= 200 <= nums[i] <= 10000 <= 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)
}
}