您的位置:首页 > Web前端

查找某个数是否在二维数组中(剑指offer第一题)

2016-10-18 22:26 351 查看
题目描述

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

算法思路:

从二维数组的右上角开始查找,如果当前索引值和目标值相同,则返回结果;否则,如果当前索引值大于目标值,则可删除该索引值所在行;如果当前索引值小于目标值,则可删除该索引值所在列。

算法代码:

public class Solution {
public boolean Find(int [][] array,int target) {
int m = array.length;//行数
int n = array[0].length;//列数
//从右上角开始找
int i = 0;
int j = n-1;
while(i<m && j>=0)
{
if(target == array[i][j])
return true;
else if(target < array[i][j])//剔除本列
j--;
else if(target > array[i][j])//剔除本行
i++;
}
return false;
}
}


可能出现的问题:

1、丢失else:while循环中,如果丢失else,直接写作三个if语句,是错误的,因为判断完第二个if,如果成立,此时j的值改变了,再用改变后的j值和之前的i值判断,这不是我们想要的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 二维数组