The Counting Sort 1 challenge from HackerRank is as follows:
Challenge:
Given a list of integers, count and return the number of times each value appears as an array of integers.
Function Description:
Complete the countingSort function in the editor below.
countingSort has the following parameter(s):
arr[n]: an array of integers
Returns:
int[100]: a frequency array
Input Format:
The first line contains an integer n, the number of items in arr. Each of the next n lines contains an integer arr[i] where 0 <= i < n.
My code:
function countingSort(arr) {
// Write your code here
let freqArray = [];
let frequency = 0;
for(let i=0; i <= arr.length; i++){
if(i != 0){
freqArray.push(frequency);
}
frequency = 0;
for(let j=0; j <= arr.length; j++){
if(arr[i] == arr[j]){
frequency++;
}
}
}
return freqArray;
}
Input:
63 25 73 1 98 73 56 84 86 57 16 83 8 25 81 56 9 53 98 67 99 12 83 89 80 91 39 86 76 85 74 39 25 90 59 10 94 32 44 3 89 30 27 79 46 96 27 32 18 21 92 69 81 40 40 34 68 78 24 87 42 69 23 41 78 22 6 90 99 89 50 30 20 1 43 3 70 95 33 46 44 9 69 48 33 60 65 16 82 67 61 32 21 79 75 75 13 87 70 33
My output:
1 3 2 2 2 2 2 1 2 1 2 2 1 3 2 2 2 1 2 2 2 1 2 3 1 1 2 2 1 1 1 2 3 2 1 1 1 3 2 2 3 2 2 2 2 1 2 3 1 2 1 3 2 2 2 1 1 2 1 2 1 3 1 1 2 1 1 2 2 3 1 2 1 2 1 2 2 1 3 2 2 2 3 1 3 1 1 2 1 2 1 3 2 2 2 2 1 2 2 3
Expected output:
0 2 0 2 0 0 1 0 1 2 1 0 1 1 0 0 2 0 1 0 1 2 1 1 1 3 0 2 0 0 2 0 3 3 1 0 0 0 0 2 2 1 1 1 2 0 2 0 1 0 1 0 0 1 0 0 2 1 0 1 1 1 0 1 0 1 0 2 1 3 2 0 0 2 1 2 1 0 2 2 1 2 1 2 1 1 2 2 0 3 2 1 1 0 1 1 1 0 2 2
Maybe I just don't understand how frequency works, but if I look arr[2] = 73 and arr[5] = 73, i conclude 73 appears 2 times in this array, hence my output. However the expected output is 0. Can someone explain to me what I am missing?