1901. 寻找峰值 II (二分法)
链接:https://leetcode.cn/problems/find-a-peak-element-ii/
题解:
class Solution { public: vector<int> findPeakGrid(vector<vector<int>>& mat) { int m = mat.size(); if (m <= 0) { return {}; } int n = mat[0].size(); if (n <= 0) { return {}; } int start = 0; int end = m-1; while (start + 1 < end) { int mid = start + (end-start)/2; int col = max_element(mat[mid].begin(), mat[mid].end()) - mat[mid].begin(); if (mat[mid-1][col] < mat[mid][col] && mat[mid][col] > mat[mid+1][col]) { return {mid, col}; } else if (mat[mid-1][col] > mat[mid][col]) { end = mid; } else { start = mid; } } int col = max_element(mat[start].begin(), mat[start].end()) - mat[start].begin(); if (mat[start][col] > mat[end][col]) { return {start, col}; } col = max_element(mat[end].begin(), mat[end].end()) - mat[end].begin(); return {end, col}; } };