本文共 1180 字,大约阅读时间需要 3 分钟。
为了高效地判断m×n矩阵中是否存在目标值,我们可以利用矩阵的特殊性质:每行有序递增,且每行的第一个数大于上一行的最后一个数。这种结构使得我们可以通过逐行查找和二分查找来优化搜索过程。
这种方法充分利用了每行有序的特性,减少了不必要的比较,提高了效率。
public boolean searchMatrix(int[][] matrix, int target) { int m = matrix.length; if (m == 0) return false; int n = matrix[0].length; for (int i = 0; i < m; i++) { int[] row = matrix[i]; if (row[0] > target) { continue; } if (row[n - 1] < target) { continue; } int left = 0; int right = n - 1; while (left <= right) { int mid = (left + right) / 2; if (row[mid] == target) { return true; } else if (row[mid] < target) { left = mid + 1; } else { right = mid - 1; } } } return false;} 这种方法的时间复杂度为O(m log n),能够高效地处理较大的矩阵。
转载地址:http://tamq.baihongyu.com/