力扣1901.寻找峰值II
-
- 二分每一行 并用函数找出每一行中最大值的下标
- 若最大值比其下面相邻的元素大 则上方一定存在峰值
- 若最大值比其下面相邻的元素小 则下方一定存在峰值
-
class Solution { int indexmax(vector<int> &a) { return max_element(a.begin(),a.end()) - a.begin(); } public: vector<int> findPeakGrid(vector<vector<int>>& mat) { int l = 0,r = mat.size() - 1; while(l < r) { //行 int i = l + r >> 1; //列 int j = indexmax(mat[i]); if(mat[i][j] > mat[i+1][j]) r = i; else l = i + 1; } return {l,indexmax(mat[l])}; } };