剑指offer 3题 【数组】二维数组中的查找
2016-07-13 22:10
411 查看
题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。牛客传送门:点击打开链接
思路挺清晰,如下图,从右上角开始寻找,如果此位置小于target,则下移一行;如果此位置大于target,则向左移动一下,当走到左下角时没有找到,则返回false。难度在于边界值的判断。
1 2 8 9
2 4 9 12
4 7 10 13
6 8 11 15
public class Title3 { public boolean Find(int [][] array,int target) { if(array == null) return false; // 二维数组的长和高 int len = array[0].length,high = array.length; int i = 0,j = len-1; // 如果没有到左下角 while(i != high-1 && j != 0){ // 如果此位置小于target,则下移一行 while(i < high-1 && array[i][j] < target) i++; // 如果此位置大于target,则向左移动一下 while(j>0 && array[i][j] >target) j--; if(array[i][j] == target) return true; } return false; } /** * 测试 * @param args */ public static void main(String[] args) { int[][] array = new int[4][4]; int[] number = {1,2,8,9,2,4,9,12,4,7,10,13,6,8,11,15}; int index = 0; for(int i=0;i<4;i++){ for(int j=0;j<4;j++) array[i][j] = number[index++]; } for(int i=0;i<4;i++){ for(int j=0;j<4;j++) System.out.print(array[i][j]+" "); System.out.println(); } System.out.println(new Title3().Find(array, 5)); //5,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]] } }
相关文章推荐
- H5中viewport参数
- leetcode---Populating Next Right Pointers in Each Node---二叉树、广搜
- HTML元素分类及其特点
- JavaScript---表单验证的过程
- 学习 React(jsx语法) + es2015 + babel + webpack
- 样式,表现分离--微博发言三种方式
- 用JS改变CSS样式
- HTML头部元素
- JS物理引擎p2.js中文文档
- 6、CSS简介
- caffe LMDB 库学习
- css属性中如果后面个三个值,那么中间的那个一般代表左右元素的值。
- JSP 的学习经验总结
- 京东商城导航logo---用js
- 京东商城导航logo---用css
- HTML颜色
- bootstrap 模态窗口实例
- HTML5<video>
- HTML 文本格式化-文字方向(<bdo>标签)
- html5新增标签