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

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

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

    List result = new ArrayList(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

                        if(key

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

                            j =j-step;

                        }else{

                            break;

                        }

                    }

                    A[j+step]=key;

                }

                step = step/2;

            }

        }

         for(int i=0;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到n-1,其中n是这个数组的大小,值从0到10000)和一个查询列表。对于每个查询,给你一个整数,返回数组中小于给定整数的元素数。...)