搜索二维矩阵

xiaoxiao2021-02-28  124

写出一个高效的算法来搜索 m × n矩阵中的值。

这个矩阵具有以下特性:

每行中的整数从左到右是排序的。 每行的第一个数大于上一行的最后一个整数。

样例 考虑下列矩阵:

[ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ]

给出 target = 3,返回 true

思路: 排序数组,二分查找即可;

bool searchMatrix(vector<vector<int> > &matrix, int target) { if (matrix.size() == 0)return false; int m = matrix.size(), n = matrix[0].size(); int low = 0, high = m * n - 1; int mid = 0; while (low <= high){ mid = low + (high - low) / 2; int temp = matrix[mid / n][mid % n]; if (temp == target)return true; else if (temp > target)high = mid - 1; else low = mid + 1; } return false; }
转载请注明原文地址: https://www.6miu.com/read-94933.html

最新回复(0)