【剑指Offer】二维数组中的查找$2.3.1
2017-09-30 12:49
218 查看
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和整数,判断数组中是否有该整数。
private boolean find(int[][] arr, int row, int col, int key) { if (arr == null) { throw new IllegalArgumentException("给定数组不能为空"); } if (row <= 0 || col <= 0) { throw new IllegalArgumentException("给定非法行值列值row:" + row + ", col:" + col); } for (int i = 0; i < row; i++) { //从每行的最大值的列开始 for (int j = col - 1; j >= 0; j--) { //如果该值等于 if (arr[i][j] == key) { return true; } //如果该值小于key else if (arr[i][j] < key) { //那么该行比他更小的都应该丢弃掉 break; } //如果该值大于key else if (arr[i][j] > key) { //该列以下已经没有符合key要求的了,col-1 col--; } } } return false; } @Test public void runWithMe() { int key = -1; int len = 4; int[][] arr = new int[][]{ {1, 2, 8, 9}, {2, 4, 9, 12}, {4, 8, 10, 13}, {7, 10, 11, 14} }; System.out.println("数组中有包含吗:\n" + find(arr, len, len, key)); }
相关文章推荐
- 【剑指offer】2.3.1 数组——面试题3:二维数组中的查找
- [剑指Offer]二维数组中的查找[java]
- 【剑指offer-Java版】03二维数组中的查找
- [剑指offer-1384] 二维数组中的查找
- 二维数组的查找 剑指offer面试题
- 剑指offer---面试题3:二维数组中的查找
- 剑指offer面试题4 - 二维数组的查找 java
- 剑指OFFER_二维数组中的查找
- 剑指Offer面试题:2.二维数组中的查找
- 剑指offer之有序二维数组查找
- 剑指offer 查找二维数组
- 【剑指offer】 第四题:二维数组中的查找
- 剑指offer面试题:二维数组中的查找
- 剑指OFFER-二维数组中的查找
- 剑指Offer 面试题3 二维数组中查找
- 【剑指offer】二维数组的查找
- [剑指offer]二维数组中的查找
- 【剑指offer】面试题3:二维数组中的查找
- 剑指offer面试题3—二维数组中的查找(Java实现)
- 剑指offer面试题3 二维数组的查找(java实现)