码迷,mamicode.com
首页 > 编程语言 > 详细

二维数组中的查找

时间:2016-06-11 15:52:14      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

题目描述

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
public class Solution {
    //从数组左下角开始查找
    public boolean Find2(int [][] array,int target) {
        int m = array.length-1;
        int n = array[0].length-1;
        
        int i=0;
        while(m>=0 && i<=n){
            if(target < array[m][i]){
                m--;
            }else if(target > array[m][i]){
                i++;
            }else{
                return true;
            }
        }
        return false;
    }
    
    // 从数组右上角开始查找
    public boolean Find3(int[][] array, int target){
        int n = array[0].length-1;
        int i = 0;
        while(n>=0 && i<array.length){
            if(target > array[i][n]){
                i++;
            }else if(target < array[i][n]){
                n--;
            }else{
                return true;
            }
        }
        return false;
    }
    
    // 遍历每一行,每一行中二分查找
    public boolean Find(int[][] array, int target){
        for(int i=0; i<array.length; i++){
            int low=0; 
            int high=array[i].length-1;
            
            while(low <= high){
                int mid = (low + high)/2;
                if(target > array[i][mid]){
                    low = mid+1;
                }else if(target < array[i][mid]){
                    high = mid-1;
                }else{
                    return true;
                }
            }   
        }
        return false;
    }
}

 

二维数组中的查找

标签:

原文地址:http://www.cnblogs.com/hesier/p/5575340.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!