查找某个数是否在二维数组中(剑指offer第一题)
2016-10-18 22:26
351 查看
题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
算法思路:
从二维数组的右上角开始查找,如果当前索引值和目标值相同,则返回结果;否则,如果当前索引值大于目标值,则可删除该索引值所在行;如果当前索引值小于目标值,则可删除该索引值所在列。
算法代码:
可能出现的问题:
1、丢失else:while循环中,如果丢失else,直接写作三个if语句,是错误的,因为判断完第二个if,如果成立,此时j的值改变了,再用改变后的j值和之前的i值判断,这不是我们想要的。
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
算法思路:
从二维数组的右上角开始查找,如果当前索引值和目标值相同,则返回结果;否则,如果当前索引值大于目标值,则可删除该索引值所在行;如果当前索引值小于目标值,则可删除该索引值所在列。
算法代码:
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值判断,这不是我们想要的。
相关文章推荐
- 【剑指offer】【二维数组中的查找】【有序二维数组整数查找】【判断二维数组是否为空方法】
- 剑指offer之第一题 二维数组中查找 Java实现
- 剑指offer_快速查找递增二维数组中是否存在目标
- 【剑指offer】二分查找二维数组
- 剑指offer第三题:二维数组中查找
- 剑指offer - 二维数组的查找
- 剑指offer:二维数组中的查找(数组)
- 剑指offer-二维数组中的查找-java
- 剑指offer|面试题3:二维数组中的查找(Java代码)
- 剑指offer-面试题3.二维数组中的查找
- 剑指offer——二维数组中的查找
- 剑指offer面试题3:二维数组中的查找
- 剑指offer_02_二维数组中的查找
- 剑指offer 01 二维数组中的查找
- 剑指 offer set 1 二维数组中查找
- [剑指offer-1384] 二维数组中的查找
- 剑指offer__01__二维数组中的查找
- 剑指Offer 面试题3:二维数组中查找
- 【剑指offer-解题系列(1)】二维数组中的查找
- 剑指Offer 3 二维数组中的查找