题目地址:https://leetcode.cn/problems/find-a-peak-element-ii
题目
一个 2D 网格中的 峰值 是指那些 严格大于 其相邻格子(上、下、左、右)的元素。
给你一个 从 0 开始编号 的 m x n 矩阵 mat ,其中任意两个相邻格子的值都 不相同 。找出 任意一个 峰值 mat[i][j] 并 返回其位置 [i,j] 。
你可以假设整个矩阵周边环绕着一圈值为 -1 的格子。
要求必须写出时间复杂度为 O(m log(n)) 或 O(n log(m)) 的算法
解题思路
今天的题有点简单,直接遍历二维数组,找到比相邻元素大的元素返回即可。需要注意一点就是,不存在的元素需要赋值-1,不然比较的时候会出错。
答案
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
var findPeakGrid = function(mat) { const m = mat.length const n = mat[0].length for(let i = 0; i < m; i ++) { for(let j = 0; j < n; j ++) { if( mat[i][j] > exits(mat, i-1, j-1) && mat[i][j] > exits(mat, i, j-1) && mat[i][j] > exits(mat, i+1, j) && mat[i][j] > exits(mat, i, j+1) ) { return [i, j] } } } };
function exits(val, i, j) { if(val[i] === undefined || val[i][j] === undefined) { return -1 } return val[i][j] }
|