Code Challenge: Simple Mode

Share the love

Here’s another fun code challenge from Coderbyte:

Using the JavaScript language, have the function SimpleMode(arr) take the array of numbers stored in arr and return the number that appears most frequently (the mode). For example: if arr contains [10, 4, 5, 2, 4] the output should be 4. If there is more than one mode return the one that appeared in the array first (ie. [5, 10, 10, 6, 5] should return 5 because it appeared first). If there is no mode return -1. The array will not be empty.


Here are some test cases:

Input = 5,5,2,2,1O Output = 5
Input = 3,4,1,6,10 Output = -1

Here’s my solution collapsed:

[code language=”javascript” collapse=”true”]
function SimpleMode(arr) {
var highest = 1;
var mostFrequently = -1;

for ( var i = 0; i < arr.length; i++ ) {
var count = 0;

for ( var j = 0; j < arr.length; j++ ) {
if ( arr[i] == arr[j] ) {
count++;
}
}

if ( count > highest ) {
highest = count;
mostFrequently = arr[i];
}
}

return mostFrequently;
};
[/code]

To start, I setup two variables. The variable highest would hold the current highest frequency. For example, if the digit 2 appeared three times, highest would be three. To start, I could safely set this to 1 since the array was promised not to be empty and a digit would have to appear once by default. The mostFrequently variable held the actual digit that I wanted to return at the end (the one that appeared most frequently). Since I wanted to return -1 if there wasn’t a mode, I set mostFrequently to -1 at the beginning.

Next, I started a for loop that would loop over the array. Within that for loop, I created another for loop comparing the item to every other item in the array. If the items matched, I incremented my counter variable.

[code language=”javascript”]
for ( var i = 0; i < arr.length; i++ ) {
var count = 0;

for ( var j = 0; j < arr.length; j++ ) {
if ( arr[i] == arr[j] ) {
count++;
}
}
}
[/code]

Once the comparison for loop was finished, I compared the value of count to the value of highest. If it was greater, I replaced the value of highest with count and set the mostFrequently variable to the current array item.

[code language=”javascript”]
if ( count > highest ) {
highest = count;
mostFrequently = arr[i];
}
[/code]

Solve it a different way? I want to hear it. Let me know in the comments!

Share the love
Strategies on solving problems and wowing customers every Sunday 👉
Strategies for solving problems and wowing customers 👇