Give you an integer array (index from 0 to n-1, where n is the size of this array, value from 0 to 10000) and an query list. For each query, give you an integer, return the number of element in the array that are smaller than the given integer.
Example
For array [1,2,7,8,5]
, and queries [1,8,5]
, return [0,4,2]
public class Solution {
/**
* @param A: An integer array
* @return: The number of element in the array that
* are smaller that the given integer
*/
public ArrayList<Integer> countOfSmallerNumber(int[] A, int[] queries) {
ArrayList<Integer> res = new ArrayList<Integer>();
if(A.length == 0) {
for(int i : queries) {
res.add(0);
}
return res;
}
Arrays.sort(A);
for(int i = 0; i < queries.length; i++) {
res.add(binaryS(A, queries[i]));
}
return res;
}
private int binaryS(int[] A, int o) {
int length = A.length - 1;
while(o <= A[length] && length > 0) length /= 2;
while(o > A[length] && length < A.length - 1) length ++;
return length;
}
}