二维数组中的查找(java版)

来源:互联网 发布:ff14人族捏脸数据分享 编辑:程序博客网 时间:2024/05/18 03:19

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


【解题思路1】
//1. 按行遍历二维数组,当前行遍历中,遇到比目标大的数字,则停止遍历。进入下一行的遍历。直到找到该数字,或遍历结束。

public class Solution {    public boolean Find(int target, int [][] array) {        int len1 = array.length;        if(len1 == 0){            return false;        }else{            int len2 = array[0].length, inx = len2;            for(int i=0; i<len1; i++){                for(int j=0; j<inx; j++){                    if(array[i][j] == target){                        return true;                    }                    if(array[i][j]>target){                        inx = j;                        break;                    }                }            }            return false;        }    }}

【解题思路2】
//1.利用二维数组由上到下,由左到右递增的规律,那么选取右上角或者左下角的元素a[row][col]与target进行比较。
//2.当target小于元素a[row][col]时,那么target必定在元素a所在行的左边, 即col–;
//3.当target大于元素a[row][col]时,那么target必定在元素a所在列的下边, 即row++;

public class Solution {    public boolean Find(int [][] array,int target) {        int row=0;        int col=array[0].length-1;        while(row<=array.length-1&&col>=0){            if(target==array[row][col])                return true;            else if(target>array[row][col])                row++;            else                col--;        }        return false;    }}