494. Target Sum
来源:互联网 发布:iphone4移动数据开关 编辑:程序博客网 时间:2024/05/22 14:40
You are given a list of non-negative integers, a1, a2, …, an, and a
target, S. Now you have 2 symbols + and -. For each integer, you
should choose one from + and - as its new symbol.Find out how many ways to assign symbols to make sum of integers equal
to target S.Example 1: Input: nums is [1, 1, 1, 1, 1], S is 3. Output: 5
Explanation:-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 = 3There are 5 ways to assign symbols to make the sum of nums be target
3. Note: The length of the given array is positive and will not exceed 20. The sum of elements in the given array will not exceed 1000. Your output answer is guaranteed to be fitted in a 32-bit integer.
int findTargetSumWays(int* nums, int numsSize, int S) { int buffer[20][2001]; int i,j,k; if(nums == NULL||numsSize <= 0){ return 0; } if(S > 1000 || S < -1000){ return 0; } /*initial*/ memset(buffer,0,sizeof(int)*20*2000); buffer[0][1000+nums[0]] = buffer[0][1000+nums[0]] + 1; buffer[0][1000-nums[0]] = buffer[0][1000-nums[0]] + 1; /*calute*/ for(i = 1;i < numsSize; ++i) { for(j = 0;j <= 2000;++j){ if(buffer[i-1][j] > 0){ buffer[i][j+nums[i]] = buffer[i][j+nums[i]] + buffer[i-1][j]; buffer[i][j-nums[i]] = buffer[i][j-nums[i]] + buffer[i-1][j]; } } } return buffer[numsSize-1][S+1000];}
- LeetCode 494. Target Sum
- [LeetCode]494. Target Sum
- 494. Target Sum
- [leetcode]494. Target Sum
- 494. Target Sum
- Leetcode 494. Target Sum
- 494. Target Sum -Medium
- 494. Target Sum
- Leetcode-494. Target Sum
- 494. Target Sum
- Leetcode 494. Target Sum
- 494. Target Sum
- leetcode-494. Target Sum
- 494. Target Sum
- 494. Target Sum
- 494. Target Sum
- 494. Target Sum
- 494. Target Sum
- (noip 2015 斗地主)<搜索+贪心>
- 图形学(2)光栅图形学的直线绘制(上)
- ES6:解构赋值
- 2018京东前端笔试题笔试题
- JAVAEE之web基础知识
- 494. Target Sum
- 非常详细的 Docker 学习笔记
- Spark transformation算子案例
- 透明Textbox的简单实现!
- HDU
- 【Ubuntu】我的Ubuntu 16.04 x64配置记录
- JAVAEE之Servlet入门
- HttpClient使用详解
- 《Python机器学习实战》第一章读书笔记:k-近邻算法