码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Leetcode】1901. Find a Peak Element II


    题目地址:

    https://leetcode.com/problems/find-a-peak-element-ii/description/

    给定一个 m × n m\times n m×n的二维矩阵 A A A,题目保证每个数字四个方向上的相邻数字一定不同。求一个位置,该位置比其相邻的数都更大。返回其坐标。如果不存在则返回 ( − 1 , − 1 ) (-1,-1) (−1,−1)。

    思路是二分。我们将所有行看成一个整体,对这 m m m行进行二分,分到一行的时候,看一下这行的最大值,如果这个最大值已经满足条件了,则直接返回答案;如果不满足,说明这个数 x x x比其上下其中一个小,不妨设其比其上的那个数小,那么可以断定,如果有解,其中必然有一个解在上半部分(可以这样想,我们可以沿着 x x x上面那个数继续走,每次就走上升的路径,这个路径一定不会回到 x x x所在行的,因为 x x x就是其所在行的最大值),那么我们就能将下半部分直接排除了。其实我们是可以证明解一定存在的,证明很显然,只要随便取一个起点然后沿着上升路径走就行了。代码如下:

    class Solution {
     public:
      vector<int> findPeakGrid(vector<vector<int>>& A) {
        vector<int> res;
        int m = A.size(), n = A[0].size();
        int l = 0, r = m - 1;
        int max_col = 0;
        while (l < r) {
          int mid = l + (r - l >> 1);
          for (int i = 0; i < n; i++)
            if (A[mid][i] > A[mid][max_col]) max_col = i;
          if ((!mid || A[mid][max_col] > A[mid - 1][max_col]) &&
              (mid == m - 1 || A[mid][max_col] > A[mid + 1][max_col]))
            return {mid, max_col};
    
          if (mid && A[mid][max_col] < A[mid - 1][max_col])
            r = mid;
          else
            l = mid + 1;
        }
    	// 解一定存在
    	return {l, max_col};
      }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    时间复杂度 O ( n log ⁡ m ) O(n\log m) O(nlogm),空间 O ( 1 ) O(1) O(1)。

  • 相关阅读:
    【Android笔记05】Android基本的UI控件(ListView、RecyclerView、ViewPager)
    【ccf-csp题解】第7次csp认证-第二题-俄罗斯方块-简单碰撞检测算法
    ARM体系架构
    数仓工具—Hive集成篇之UDF写ES(04)
    蓝牙学习二(连接和通讯简述)
    Java 面试常遇到的3道题,你知道答案吗?
    使用js获取选中的dom元素 并改变选中(有序dom)的状态
    win11下配置ftp
    基于Java+vue前后端分离失物招领信息交互平台设计实现(源码+lw+部署文档+讲解等)
    Cortex-M3如何跳出BusFault,跳过出错代码,程序往下执行
  • 原文地址:https://blog.csdn.net/qq_46105170/article/details/127726299
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号