Skip to content

Commit df4b97f

Browse files
authored
Update Array Addition I
1 parent 0d583d6 commit df4b97f

File tree

1 file changed

+18
-26
lines changed

1 file changed

+18
-26
lines changed

Array Addition I

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -27,34 +27,26 @@
2727
* *
2828
***************************************************************************************/
2929

30-
function ArrayAdditionI(arr) {
30+
function ArrayAdditionI(arr) {
31+
const largest = Math.max(...arr);
32+
arr.splice(arr.indexOf(largest), 1);
3133

32-
arr.sort(function(a,b){return a - b});
33-
var maxNum = arr.pop();
34-
var tot = 0;
35-
36-
for (var i = 0; i < arr.length; i++){
37-
tot += arr[i];
38-
for (var j = 0; j < arr.length; j++){
39-
if (i != j) {
40-
tot += arr[j];
41-
if (tot == maxNum) {
42-
return true;
43-
}
34+
function canSum(target, nums) {
35+
if (target === 0) return true;
36+
if (target < 0) return false;
37+
for (let i = 0; i < nums.length; i++) {
38+
const remaining = nums.slice();
39+
remaining.splice(i, 1);
40+
if (canSum(target - nums[i], remaining)) {
41+
return true;
4442
}
4543
}
46-
47-
for (var k = 0; k < arr.length; k++) {
48-
if (i != k) {
49-
tot -= arr[k];
50-
if (tot == maxNum) {
51-
return true;
52-
}
53-
}
54-
}
55-
tot = 0;
44+
return false;
5645
}
57-
58-
return false;
59-
46+
47+
return canSum(largest, arr);
6048
}
49+
50+
// Test cases with console.log
51+
console.log(ArrayAdditionI([4, 6, 23, 10, 1, 3])); // Expected output: true
52+
console.log(ArrayAdditionI([4, 6, 12, 10, 1, 3])); // Expected output: false

0 commit comments

Comments
 (0)