首页 > 代码库 > 剑指offer-特定二维数组中查找一个元素是否存在-二分搜索-二维数组

剑指offer-特定二维数组中查找一个元素是否存在-二分搜索-二维数组

int [][] array ={
{1,2,8,9},
{2,4,9,12},
{4,7,10,13},
{6,8,11,19}
};

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

 

技术分享

public class Solution {
    public static boolean Find(int target, int [][] array) {
    	int M = array.length;
        int N = array[0].length;
        int i=M-1,j=0;
        while(i>=0 && j<N){
     	
        	if(target == array[i][j]) 
        		return true;
        	
        	if(target< array[i][j])
        		{i--;continue;}
        	
        	if(target> array[i][j])
        		{j++;continue;}
        	
        }
        return false; 
    }
    
    public static void main(String[] args){
    	int [][] array ={
    			{1,2,8,9},
    			{2,4,9,12},
    			{4,7,10,13},
    			{6,8,11,19}
    			
    	};
    	System.out.println(Find(-1,array));
    }
}

  技术分享

暴力解法也通过了,但是这个时间复杂度为n方 , 上面的那个时间复杂度

技术分享

 

*****************************************************************************

错误解法

技术分享

 

剑指offer-特定二维数组中查找一个元素是否存在-二分搜索-二维数组