Leetcode--494. 目标和
給定一個非負整數數組,a1, a2, ..., an, 和一個目標數,S。現在你有兩個符號?+?和?-。對于數組中的任意一個整數,你都可以從?+?或?-中選擇一個符號添加在前面。
返回可以使最終數組和為目標數 S 的所有添加符號的方法數。
示例 1:
輸入: nums: [1, 1, 1, 1, 1], S: 3
輸出: 5
解釋:?
-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3
一共有5種方法讓最終目標和為3。
注意:
數組非空,且長度不會超過20。
初始的數組的和不會超過1000。
保證返回的最終結果能被32位整數存下。
思路:
每一個位置都有正負兩個選擇,依次遞歸,找出所有的可能,最后結果與目標值S相同的情況有多少,就是有多少種方法
?
tips:一開始把count寫成了全局的靜態變量,可能是提交系統不認可,count一直是0 。。。。。。
提交的代碼:
class?Solution?{
???int?count?=?0;
????public?void?fun(int?nums[],int?sum,int?S,int?i)
????{
????????if(i==nums.length)
????????{
????????????if(sum==S)
????????????{
????????????????count++;
????????????}
????????????return;
????????}
????????fun(nums,sum+nums[i],S,i+1);
????????fun(nums,sum-nums[i],S,i+1);
????}
????public?int?findTargetSumWays(int[]?nums,?int?S)?{
????????fun(nums,nums[0],S,1);
????????fun(nums,-nums[0],S,1);
????????return?count;
????}
}
總結
以上是生活随笔為你收集整理的Leetcode--494. 目标和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode--923. 三数之和的
- 下一篇: 生小兔问题