Counting sort
Instructions
- Input:
[[0, 'a'], [0, 'b'], [1, 'c']]
- String with same integer should be printed in same order
- First half of array replaced by -
My solution
function coutingSort(arr, arrLen) {
const countArr = [];
for (let i = 0; i < arrLen; i++) {
if (countArr[i]) {
countArr[i]+=1;
} else {
countArr[i] = arr[i];
}
}
}
const test = [1,1,1,1,1,1,0,0];
Solution Java
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.regex.*;
import java.util.stream.*;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;
public class Solution {
public static void main(String[] args) throws IOException {
final int maxValue = 100;
/* Create HashMap with empty "buckets" to put Strings into */
HashMap<Integer, ArrayList<String>> map = new HashMap<>(maxValue);
for (int i = 0; i < maxValue; i++) {
map.put(i, new ArrayList<String>());
}
/* Save input */
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
for (int i = 0; i < n; i++) {
String [] pair = br.readLine().split(" ");
int key = Integer.parseInt(pair[0]);
String value = (i < n/2) ? "-" : pair[1];
ArrayList<String> list = map.get(key);
list.add(value);
}
br.close();
/* Print output */
StringBuffer sb = new StringBuffer();
for (int i = 0; i < maxValue; i++) {
ArrayList<String> values = map.get(i);
for (String str : values) {
sb.append(str + " ");
}
}
System.out.println(sb);
}
}