您的位置:首页 > 其它

[Lintcode]Count of Smaller Number

2016-09-11 15:58 260 查看
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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lintcode