compareEvenAndOddSum
with Carmen Salas • 2024/11/06
Solution
/*
**Problem**
Given an [int] [array],
- Take the sum of all [ints] in even indices
- Take the sum of all [ints] in odd indices
Return 'even','odd', or 'equal', depending on the value of the sums.
**Examples/Edge Cases:**
[1, 2, 3, 4, 5] -> evenIndexSum(1+3+5 == 9) ?? oddIndexSum(2+4 == 6) -> 9 > 6 -> "even"
[1, 1] -> evenIndexSum(1) ?? oddIndexSum(1) -> 1 === 1 -> "equal"
**Data Structures**
- Arrays
- Number
**Algorithm**
Iterate through all values
- if value is even, add to sum
- if value is odd, subtract from sum
Return 'even' if sum is greater than 0
'odd' if sum is less than 0
'equal' if sum is 0.
*/
function solution(numbers) {
// using a regular for loop
// we can avoid declaring any external variables
// by storing the sum at numbers[0].
// iterate through all the numbers in the array
// we skip the first element (numbers[0])
// since that's going to hold our sum
for (let i = 1; i < numbers.length; i++) {
// if even add the current value to sum
if (i%2 === 0) {
numbers[0] += numbers[i];
// if odd subtract the current value from sum
} else {
numbers[0] -= numbers[i];
}
}
// We can determine 'even', 'odd', or 'equal'
// just by looking at our sum.
// we also need to cover an empty array!
// since constraints tell us that `0 <= numbers.length <= 1000`
if (numbers[0] === 0 || numbers.length === 0) { return 'equal'; }
if (numbers[0] < 0) { return 'odd'; }
if (numbers[0] > 0) { return 'even'; }
// using array methods
const sum = numbers.reduce((sum, val, index) => {
return (index%2 === 0) ? sum + val : sum - val;
}, 0);
// we can skip the check we did for `numbers.length === 0`
// unlike above since `sum = 0` by default, with our .reduce()
if (sum === 0) { return 'equal'; }
if (sum < 0) { return 'odd'; }
if (sum > 0) { return 'even'; }
}
Last updated