数组oj --->二维数组中的查找
Posted ohana!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组oj --->二维数组中的查找相关的知识,希望对你有一定的参考价值。
题目内容:
分析:
- 首先题目中有个最重要的信息,从上到下依次增大,从左到右依次增大
- 对于任意一个数组类型的题目,暴力法基本都可以提供一部分解法,但,暴力法很可能不是最优解,所以,这道题目是寻找一个元素,当然可以暴力遍历
- 再来说说优化解法,根据所给二维数组的特性,我们可以从此入手
- 记录左下角的元素为flag,即标志数,若target > flag,说明肯定不在flag所在的这一列,反之,那么肯定就不在flag所在的这一行
解题代码:
class Solution
public boolean findNumberIn2DArray(int[][] matrix, int target)
//我们定义从左下角开始,所以i就为左下角第一个元素即为最后一行
//j为第一列就是0
int i = matrix.length - 1;
int j = 0;
//这里对于循环条件也很清楚,只要i不小于0,j不大于一行元素的最大的下标
//那么就说明,这个二维数组依然没有遍历完
while(i >= 0 && j < matrix[0].length)
//如果这个数字比要查找的数字大,那说明肯定不在这一行,i--;
//同理就是j--;
if(matrix[i][j] > target)
i--;
else if(matrix[i][j] < target)
j++;
else
return true;
return false;
以上是关于数组oj --->二维数组中的查找的主要内容,如果未能解决你的问题,请参考以下文章