搜索二维矩阵
Posted Delta
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搜索二维矩阵相关的知识,希望对你有一定的参考价值。
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:
- 每行中的整数从左到右按升序排列。
- 每行的第一个整数大于前一行的最后一个整数。
示例 1:
输入: matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ] target = 3 输出: true
mark
解决思路:
使用二分查找,m行n列的矩阵matrix共有mn个元素,其中第x个元素对应matrix中位置为[x/n][x%n]。
实现代码如下:
public static boolean searchMatrix(int[][] matrix, int target) { int m = matrix.length; if (m == 0) return false; int n = matrix[0].length; int N = m*n; int l=0,h=N-1; int mid = (l+h)/2; int i,j; while(l<=h) { i = mid/n; j = mid%n; if (matrix[i][j] == target) return true; else if (target>matrix[i][j]) l = mid+1; else h = mid-1; mid = (l+h)/2; } return false; }
以上是关于搜索二维矩阵的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 240. 搜索二维矩阵 II c++/java详细题解