给你一个整型数组(索引从0到n-1,其中n是这个数组的大小,值从0到10000)和一个查询列表。对于每个查询,给你一个整数,返回数组中小于给定整数的元素数。...

  public static List<Integer> countOfSmallerNumber(int[] A, int[] queries) {

    List<Integer> result = new ArrayList<Integer>(queries.length);

        int step =20;

        if(A!=null && A.length>1){

            step = step/2;

            while(step>0){

                for(int i =step;i< A.length;i++){

                    int key = A[i];

                    int j;

                    for(j=i-step;j>=0 && j<A.length; ){

                        if(key<A[j]){

                            A[j+step]=A[j];

                            j =j-step;

                        }else{

                            break;

                        }

                    }

                    A[j+step]=key;

                }

                step = step/2;

            }

        }

         for(int i=0;i<queries.length;i++){

        int round =0;

        int left =0;

        int right = A.length-1;

        int mid=0;

         while (left <= right) {

                  mid = (left + right) / 2;

                 if (queries[i] < A[mid]) {//i在左边

                     right = mid - 1;

                     round =1;

                 } else if (A[mid] < queries[i]) {//i在右边

                     left = mid + 1;

                     round =2;

                 } else {

                 round =0;

                 while(mid>0&&A[mid-1] == queries[i]){

                     mid--;

                 }

                 break;

                }

            }

         if(round ==2) {

             result.add(mid+1);

         }else  {

         result.add(mid);

         }

        }

        return result;

    }

转载于:https://my.oschina.net/u/586094/blog/1619857

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值