跳到主要内容

1901.寻找峰值II

链接:1901.寻找峰值II
难度:Medium
标签:数组、二分查找、矩阵
简介:给你一个 从 0 开始编号 的 m x n 矩阵 mat ,其中任意两个相邻格子的值都 不相同 。找出 任意一个 峰值 mat[i][j] 并 返回其位置 [i,j] 。

题解 1 - python

  • 编辑时间:2023-12-19
  • 执行用时:48ms
  • 内存消耗:43.8MB
  • 编程语言:python
  • 解法介绍:二分row,对每层进行找最大值。
class Solution:
def findPeakGrid(self, mat: List[List[int]]) -> List[int]:
n = len(mat)
l, r = 0, n - 1
while l <= r:
i = (l + r) // 2
j = mat[i].index(max(mat[i]))
if i - 1 >= 0 and mat[i][j] < mat[i - 1][j]: r = i - 1
elif i + 1 < n and mat[i][j] < mat[i + 1][j]: l = i + 1
else: return [i, j]