算法:搜索二维矩阵
?
編寫一個高效的算法來判斷 m x n 矩陣中,是否存在一個目標值。該矩陣具有如下特性:
- 每行中的整數從左到右按升序排列。
- 每行的第一個整數大于前一行的最后一個整數。
示例 1:
輸入: matrix = [[1, 3, 5, 7],[10, 11, 16, 20],[23, 30, 34, 50] ] target = 3 輸出: true示例 2:
輸入: matrix = [[1, 3, 5, 7],[10, 11, 16, 20],[23, 30, 34, 50] ] target = 13 輸出: false //搜索二維矩陣class Solution {public:bool searchMatrix(vector<vector<int>>& matrix, int target) {//行數int m = matrix.size();if (m == 0) return false;//列數int n = matrix[0].size();// 二分查找//right 是總長int left = 0, right = m * n - 1;int pivotIdx, pivotElement;while (left <= right) {pivotIdx = (left + right) / 2;//把總長的中間值轉化為行和列pivotElement = matrix[pivotIdx / n][pivotIdx % n];if (target == pivotElement) return true;else {if (target < pivotElement) right = pivotIdx - 1;else left = pivotIdx + 1;}}return false;} };鏈接:https://leetcode-cn.com/problems/search-a-2d-matrix/solution/sou-suo-er-wei-ju-zhen-by-leetcode/
總結
- 上一篇: 算法:删除排序数组中的重复项||
- 下一篇: MySql 创建索引原则