給你一個整型數組(索引從0到n-1,其中n是這個數組的大小,值從0到10000)和一個查詢列表。對於每一個查詢,給你一個整數,返回數組中小於給定整數的元素數。

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

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

        int step =20;while

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

            step = step/2;new

            while(step>0){j-s

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

                    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;

    }

相關文章
相關標籤/搜索