在一个二维数组中(每一个一维数组的长度相同),每一行都按照从左到右递增的顺序排序, 每一列都按照从上到下的递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数, 判断数组中是否含有该整数。 思路:矩阵有序,从左下角来看,向上递减,向右递增。 因此从左下角开始查找,比查找数字小,上移;比查找数字大,右移。 代码:时间复杂度O(m+n) public class Offer_twoArrFindNum { public static void main(String[] args) { int[][] arr = {{1,2,3,4},{4,5,6,8},{7,8,9,11}}; int target = 11; boolean flag = findNum(arr,target); } public static boolean findNum(int[][] arr , int target){ if(arr == null){ return false; } int rowlens = arr.length; int collens = arr[0].length; for(int i = rowlens-1,j = 0;i >= 0 && j < collens;){ if(target == arr[i][j]){ return true; } if(target < arr[i][j]){ i--; } if(target > arr[i][j]){ j++; } } return false; } }
【面试题】二维数组中寻找数字
最新推荐文章于 2024-08-03 18:54:56 发布