74. Search a 2D Matrix

題目

74. Search a 2D Matrix

解題思路

這道題本質就是二分搜索法=-=

首先給出的m*n矩陣是從上而下從左到右的遞增,也可以看作是一個遞增的長度爲m*n一維數組,通過二分搜索找到目標數字

具體代碼

class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int m = matrix.size();
        int n = m > 0 ? matrix[0].size() : 0;
        // 看作是一個遞增的長度爲m*n一維數組
        int start = 0, end = m * n - 1;
        int mid = 0;
        while (start <= end) {
            // 中間下標
            mid = start + (end - start) / 2;
            // 一維數組第mid個數字也就是二維數組的[mid/n][mid%n]數字
            if (matrix[mid/n][mid%n] < target) {
                start = mid + 1;
            } 
            else if (matrix[mid/n][mid%n] > target) {
                end = mid - 1;
            }
            else { // 找到對應的數字
                return true;
            }
        }
        return false;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章