欢迎使用CSDN-markdown编辑器

来源:互联网 发布:stl源码剖析第二章 编辑:程序博客网 时间:2024/06/07 21:44

题目描述:

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

该题要注意到题中二维数组的有序性,找出其中规律:利用该数组左下角和右上角的数的特点。
拿右上角的数为例,设这个数为target,target左边的数小于它,target下面的数大于它。
这样就可以利用if语句每次判断是否等于target

具体代码如下(以右上角的数为参考):

**public class Solution {    public static boolean Find(int target,int[][] arr){        //i得到数组的列数        int i=arr.length-1;        //j为数组行数,则arr[i][j]为数组右上角的数        //要求行数要大于0,列数要小于数组列的长度        for(int j=0;j<arr.length-1&&i>0;){            if(target<arr[i][j]){                i--;                continue;            }else if(target>arr[i][j]){                j++;                continue;            }else if(target==arr[i][j]){                return true;            }        }        return false;    }    //测试    public static void main(String[] args) {        int arr[][]={{1,2,3},{4,5,6},{7,8,9}};        int target=5;        System.out.println(Find(target,arr));    }}**
0 0