题目
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题
从左下角/右上角开始寻找。如从左下角开始,当当前数值小于target时,向上部区域查找(向上移动一排);当当前数值大于target时,向右部区域查找(向右移动一列)。这样一行/一列地剔除数据,就会方便很多。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public class Solution { public boolean Find(int target, int [][] array) { int cur_row = array.length-1; int cur_col = 0; while (cur_row >= 0 && cur_col < array[0].length){ if (target > array[cur_row][cur_col]){ cur_col += 1; } else if (target < array[cur_row][cur_col]){ cur_row -= 1; } else if (target == array[cur_row][cur_col]){ return true; } } return false; } }
|
references
牛客网讨论与题解