Skip to content

Commit a7b453a

Browse files
committed
solve array_addition problem
1 parent c9a5acb commit a7b453a

File tree

1 file changed

+51
-30
lines changed

1 file changed

+51
-30
lines changed

Array Addition I renamed to array_addition.js

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

30-
function ArrayAdditionI(arr) {
31-
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-
}
44-
}
45-
}
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;
56-
}
57-
58-
return false;
59-
30+
const ArrayAddition = (arr) => {
31+
if (!arr || !arr.length) return 'false'
32+
33+
const [largest, ...rest] = arr.sort((a, b) => b - a)
34+
35+
return rest.reduce((acc, curr) => (acc + curr)) === largest ? 'true' : 'false'
6036
}
37+
38+
console.log(ArrayAddition([])) //false
39+
console.log(ArrayAddition([1, 5, 6, 5])) //false
40+
console.log(ArrayAddition([1, 5, 6, 5, 2, 1])) //false
41+
console.log(ArrayAddition([1, 2, 3, 6])) //true
42+
console.log(ArrayAddition([1, 2, 3])) //true
43+
console.log(ArrayAddition([1, 2, 3, 7])) //false
44+
45+
46+
47+
48+
49+
50+
51+
// function ArrayAdditionI(arr) {
52+
53+
// arr.sort(function (a, b) { return a - b });
54+
// var maxNum = arr.pop();
55+
// var tot = 0;
56+
57+
// for (var i = 0; i < arr.length; i++) {
58+
// tot += arr[i];
59+
// for (var j = 0; j < arr.length; j++) {
60+
// if (i != j) {
61+
// tot += arr[j];
62+
// if (tot == maxNum) {
63+
// return true;
64+
// }
65+
// }
66+
// }
67+
68+
// for (var k = 0; k < arr.length; k++) {
69+
// if (i != k) {
70+
// tot -= arr[k];
71+
// if (tot == maxNum) {
72+
// return true;
73+
// }
74+
// }
75+
// }
76+
// tot = 0;
77+
// }
78+
79+
// return false;
80+
81+
// }

0 commit comments

Comments
 (0)