网易笔试第二题二分法 0% 求解答

import java.util.Scanner; 
public class Main {
 public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
         int n = in.nextInt(); 
         int a[] = new int[n];
         int b[] = new int[n];
         for (int i = 0; i < n; i  ) {
            a[i] = in.nextInt();
            if(i>0) b[i] = a[i] b[i-1];
             else b[i] = a[i];
        }
        int m = in.nextInt();
        int res[] = new int[m];
       for (int i = 0 ; i< m ; i  ){ 
           int tmp= in.nextInt();
            res[i] =cal(b,tmp);
        } 
         for (int i = 0 ; i< m ; i  ){
            System.out.println(res[i]);
        }
    }
 public static int cal(int[] nums , int cur){
    int left = 0 , right = nums.length-1; 
     if(cur <= nums[0]) return 1;
     while (left <= right) { 
      int mid = (left    right)/2; 
     if( cur <= nums[mid] && cur > nums[mid-1] ) return mid 1;
         else if( cur > nums[mid] ){
                  left = mid  1;
              }else {
                  right =mid -1;
              }
          } 
         return left  1;
    }
}


大佬们帮忙解释下#网易#
全部评论
Arrays.binarySearch() 小于0时取绝对值,大于0时加一输出
点赞 回复 分享
发布于 2018-08-11 21:47

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务