前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LintCode 390. 找峰值 II

LintCode 390. 找峰值 II

作者头像
Michael阿明
发布2020-07-13 15:51:51
5850
发布2020-07-13 15:51:51
举报
文章被收录于专栏:Michael阿明学习之路

1. 题目

给定一个整数矩阵 A, 它有如下特性:

  • 相邻的整数不同
  • 矩阵有 n 行 m 列。
  • 对于所有的 i < n, 都有 A[i][0] < A[i][1] && A[i][m - 2] > A[i][m - 1]
  • 对于所有的 j < m, 都有 A[0][j] < A[1][j] && A[n - 2][j] > A[n - 1][j]

我们定义一个位置 [i,j] 是峰值, 当且仅当它满足:

  • A[i][j] > A[i + 1][j] && A[i][j] > A[i - 1][j] && A[i][j] > A[i][j + 1] && A[i][j] > A[i][j - 1]

找到该矩阵的一个峰值元素, 返回它的坐标.

代码语言:javascript
复制
样例 1:
输入: 
    [
      [1, 2, 3, 6,  5],
      [16,41,23,22, 6],
      [15,17,24,21, 7],
      [14,18,19,20,10],
      [13,14,11,10, 9]
    ]
输出: [1,1]
解释: [2,2] 也是可以的. [1,1] 的元素是 41, 大于它四周的每一个元素 (2, 16, 23, 17).

样例 2:
输入: 
    [
      [1, 5, 3],
      [4,10, 9],
      [2, 8, 7]
    ]
输出: [1,1]
解释: 只有这一个峰值

挑战
O(n+m) 的时间复杂度.
如果你 认为 你使用了 O(nlogm) 或 O(mlogn) 的算法, 
能否证明它的复杂度其实是 O(n+m)? 
或者想一个类似的算法但是复杂度是O(n+m)?

注意事项
保证至少存在一个峰值, 而如果存在多个峰值, 返回任意一个即可.

2. 解题

代码语言:javascript
复制
class Solution {
public:
    vector<int> findPeakII(vector<vector<int>> &A) {
        int n = A.size(), m = A[0].size();
        int i = 1, j = 1;//从(1,1)开始,(0,0)不可能是答案
        vector<int> ans;
        for( ; 1 ; ++i)
        {
        	//找中间点
            while(A[i][j] < A[i][j+1])
                j++;
            while(A[i][j] < A[i][j - 1])
                j--;
            //判断上下是否也满足
            if(A[i][j] > A[i + 1][j] && A[i][j] > A[i - 1][j])
            {
                ans.push_back(i);
                ans.push_back(j);
                return ans;
            }
        }
        return {-1,-1};
    }
};

100% 数据通过测试 总耗时 2399 ms 您的提交打败了 39.40% 的提交!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/03/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 题目
  • 2. 解题
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档