Skip to content

Commit 6df2a72

Browse files
committed
fix: improve code efficiency and a glitch
1 parent 568763d commit 6df2a72

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

Maths/ParityOutlier.js

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,26 @@
88
*/
99
const parityOutlier = (integers) => {
1010
// define new containers
11-
const odds = [] // store odd number(s)
12-
const evens = [] // store even number(s)
11+
let odds_count = 0 // define counter for odd number(s)
12+
let evens_count = 0 // define counter for even number(s)
13+
let odd, even
1314

14-
for (let i = 0; i < integers.length; i++) {
15-
if (!Number.isInteger(integers[i])) { // detect non-integer elements
15+
for (let e of integers) {
16+
if (!Number.isInteger(e)) { // detect non-integer elements
1617
return null
17-
} else if (integers[i] % 2 === 0) { // an even number
18-
evens.push(integers[i])
18+
} else if (e % 2 === 0) { // an even number
19+
even = e
20+
evens_count++
1921
} else { // an odd number
20-
odds.push(integers[i])
22+
odd = e;
23+
odds_count++
2124
}
2225
}
2326

24-
if (odds.length === 0 || evens.length === 0) return null
27+
if (odds_count === 0 || evens_count === 0) return null // array has only odd/even number(s)
28+
else if (odds_count > 1 && evens_count > 1) return null // array has more than one even and odd number
2529

26-
return odds.length === 1 ? odds[0] : evens[0]
30+
return odds_count === 1 ? odd : even
2731
}
2832

2933
export { parityOutlier }

0 commit comments

Comments
 (0)