校招准备系列:每天一道算法题(10)-二维数组查找
2017-10-04 17:07
316 查看
二维数组查找
此题来自剑指offer题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路:二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。所以我们可以从右上角数组元素开始比较,若要找的值大于此值,则目标值在下一行,i++即可;若小于这个值,则就在本行的左侧,j–即可,直到找到此值即可!
public class Solution { public boolean Find(int target, int [][] array) { int row = array.length; int col = array[0].length; int i,j; for(i = 0,j=col-1;i<=row-1&&j>=0;){ if(target == array[i][j]){ return true; } if(target > array[i][j]){ i++; continue; } if(target < array[i][j]){ j--; continue; } } return false; } }
另外附上暴力破解的代码:
public class Solution { public boolean Find(int [][] array,int target) { int i,j;boolean temp=false,flag=false; for( i=0;i<array.length;i++){ for(j=0;j<array[0].length;j++){ if(array[i][j]==target){ temp=true; flag=true; break; } } if(flag==true) break; } return temp; } }
相关文章推荐
- 校招准备系列:每天一道算法题(4)
- 校招准备系列:每天一道算法题(12)-从尾到头打印链表
- 校招准备系列:每天一道算法题(6)-连续最大和
- 校招准备系列:每天一道算法题(3)
- 校招准备系列:每天一道算法题(14)-合并两个排序的链表
- 校招准备系列:每天一道算法题(13)-斐波那契数列
- 校招准备系列:每天一道算法题(15)-求1+2+3+...+n
- 校招准备系列:每天一道算法题(7)-末尾0的个数
- 校招准备系列:每天一道算法题(5)-两数之和
- 校招准备系列:每天一道算法题(1)
- 校招准备系列:每天一道算法题(2)
- 校招准备系列:每天一道算法题(8)-进制转换
- 校招准备系列:每天一道算法题(11)-替换空格
- 校招准备系列:每天一道算法题(9)-单例
- 每天一道算法题(10)——数对之差的最大值
- 每天一道算法题10 找出数组中两个只出现一次的数字
- 每天学习一算法系列(14) (输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字)
- 每天一道算法题(10)——数对之差的最大值
- 每天一道算法题10 找出数组中两个只出现一次的数字
- 每天一道算法题——二位数组中的查找