[Lintcode]Count of Smaller Number

来源:互联网 发布:java编程心得体会 编辑:程序博客网 时间:2024/05/19 10:54

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;    }}



0 0
原创粉丝点击