剑指offer面试题4:二维数组的查找(Java 实现)

 

剑指offer面试题4:二维数组的查找(Java 实现)_第1张图片


首先选取数组中右上角的数组。

1、如果该数字等于要查找的数字,则查找过程结束,返回true。

2、如果该数字大于要查找的数字,则剔除掉这个数字所在的列。

3、如果该数字小于要查找的数字,则剔除掉这个数字所在的行。

直到找到数字,或者查找范围为空(row < array.length && column >= 0)。

功能测试:

1. 二维数组中包含要查找的数字。
2. 二维数组中不包含要查找的数字。
3. 输入空指针。

public boolean Find(int target, int [][] array) {
	     if (array == null) {
	        return false;
	    }
	    int row = 0;					//数组的行数
	    int column = array[0].length-1; //数组的列数

	    while (row < array.length && column >= 0) {
	        if(array[row][column] == target) {
	            return true;
	        }
	        if(array[row][column] > target) {
	            column--;              //剔除掉一列
	        } else {
	            row++;                 //剔除掉一行
	        }
	    }
	    return false;

	    }
	}

方法二:暴力法(直接两个for循环)
 

public class test_four {
	public boolean Find(int target,int[][] array){
		int row = array.length;
		if(row<=0){
			return false;
		}else{
			for(int i=0; i

 

你可能感兴趣的:(剑指offer)