二维数组中的查找——剑指offer新解

xiaoxiao2021-02-28  6

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

之前一直都很傻,想得过于繁琐,将矩阵分成三部分来求解:

看了剑指offer之后恍然大悟,膜拜大神中。。。小虫子还需要继续加油啊:

剑指offer中的大体思路是:

对矩阵从最右上的元素开始比较:

1.如果cur>target,则将cur所在列从查找范围中删除

2.如果cur<target,则将cur所在行从查找范围中删除

3.如果cur==target,则找了了目标数

贴上剑指offer 中的例子帮助理解(喜欢图,喜欢图,不喜欢文字,就贴图好了):

代码实现:

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

转载请注明原文地址: https://www.6miu.com/read-750291.html

最新回复(0)