Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 1c551ff

Browse files
committed
Target Sum
1 parent eaa16b9 commit 1c551ff

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// Source : https://leetcode.com/problems/target-sum/
2+
// Author : Han Zichi
3+
// Date : 2017年01月22日
4+
5+
/**
6+
* @param {number[]} nums
7+
* @param {number} S
8+
* @return {number}
9+
*/
10+
var findTargetSumWays = function(nums, S) {
11+
let total = 0
12+
, len = nums.length;
13+
14+
for (let item of nums)
15+
total += item;
16+
17+
let target = total - S;
18+
19+
if (target & 1)
20+
return 0;
21+
22+
target >>= 1;
23+
24+
// select items from nums whose sum is `target`
25+
nums.sort((a, b) => b - a); // 1000ms
26+
// nums.sort((a, b) => a - b); // 1400ms
27+
28+
let ans = 0;
29+
30+
let dfs = (index, sum) => {
31+
if (sum === target) {
32+
ans++;
33+
// consider that nums contains 0
34+
// return;
35+
}
36+
37+
if (index === len || sum > target)
38+
return;
39+
40+
for (let i = index; i < len; i++)
41+
dfs(i + 1, sum + nums[i]);
42+
};
43+
44+
dfs(0, 0);
45+
46+
return ans;
47+
};

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /