Given an array of n integers numbers (with possible duplicates) in range [1..k].
Implement in Java an algorithm that preprocesses the input array in O(n+k) running time and then returns how many integer numbers there are in the range [left..right] in O(1) running time for any given left and right, 1 ≤ left ≤ right ≤ k.
Please show with an example code.