二维数组二分查找

牛客网上面练的第一道编程题,,,终于有次百分之百通过了。。。


思路:
一个 for 循环,每一行用个二分查找,因为题目中数组是有效的,所以很容易的就朝二分走了
public class Solution {
     public boolean Find( int target, int [][] array) {
          boolean result= false ;
         int row = array.length;
         int lie = array[array.length- 1 ].length;
        if (lie== 0 ){
             result = false ;
         } else {
         for ( int i= 0 ;i<row;i++) {
             int right = 0 ;
             int left = lie - 1 ;
             System.out.println( "i=" + i);
             if (result = search(right, left, i, array, target)) {
                 break ;
             }
         }
         }
         return result;
     }
      public boolean search( int right, int left, int i, int [][] array, int target){
         int mid = (right+left)/ 2 ;
         boolean result = false ;
         if (array[i][mid]==target){
             result = true ;
         } else if (array[i][mid]>target && right<left){
             left = mid - 1 ;
             result = search(right,left,i,array,target);
         } else if (array[i][mid]<target && right<left){
             right = mid + 1 ;
             result = search(right,left,i,array,target);
         }
         return result;
     }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值