题目链接
题目描述
思路:
思路一:暴力破解
思路二:对每一行进行二分查找
public boolean searchMatrix(int[][] matrix, int target) {for (int[] ints : matrix) {if (search(ints, target) != -1) {return true;}}return false;}/*** 二分查找** @param nums nums* @param target 目标元素* @return 最终位置,没有返回 -1*/public int search(int[] nums, int target) {int low = 0;int high = nums.length - 1;while (low <= high) {int mid = (high - low) / 2 + low;int num = nums[mid];if (num == target) {return mid;} else if (nums[mid] > target) {high = mid - 1;} else if (nums[mid] < target) {low = mid + 1;}}return -1;}
思路三:Z 字查找
建议直接代码调试,秒懂
public boolean searchMatrix(int[][] matrix, int target) {int m = matrix.length;int n = matrix[0].length;int x = 0;int y = n - 1;// 小于范围才进行查找while (x < m && y >= 0) {if (matrix[x][y] == target) {return true;}if (matrix[x][y] > target) {--y;} else {++x;}}return false;}
这个思路也可以看成是对角搜索

