LeetCode 764. 最大加号标志(DP)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

在一个大小在 (0, 0) 到 (N-1, N-1) 的2D网格 grid 中,除了在 mines 中给出的单元为 0,其他每个单元都是 1。网格中包含 1 的最大的轴对齐加号标志是多少阶?返回加号标志的阶数。如果未找到加号标志,则返回 0。

一个 k" 阶由 1 组成的“轴对称”加号标志具有中心网格 grid[x][y] = 1 ,以及4个从中心向上、向下、向左、向右延伸,长度为 k-1,由 1 组成的臂。

下面给出 k" 阶“轴对称”加号标志的示例。
注意,只有加号标志的所有网格要求为 1,别的网格可能为 0 也可能为 1。

示例 1:
输入: N = 5, mines = [[4, 2]]
输出: 2
在上面的网格中,最大加号标志的阶只能是2。一个标志已在图中标出。

示例 2:
输入: N = 2, mines = []
输出: 1
解释:
11
11
没有 2 阶加号标志,有 1 阶加号标志。示例 3:
输入: N = 1, mines = [[0, 0]]
输出: 0
解释:
0
没有加号标志,返回 0 。提示:
整数N 的范围: [1, 500].
mines 的最大长度为 5000.
mines[i] 是长度为2的由2[0, N-1] 中的数组成.
(另外,使用 C, C++, 或者 C# 编程将以稍小的时间限制进行​​判断.)

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/largest-plus-sign
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 动态规划,记录每个位置上4个方向上的连续 1 的个数,时间复杂度 O(N2)O(N^2)O(N2)
class Solution {
public:int orderOfLargestPlusSign(int N, vector<vector<int>>& mines) {vector<vector<int>> g(N, vector<int>(N, 1));for(auto& m : mines)g[m[0]][m[1]] = 0;vector<vector<int>> up(N, vector<int>(N, 0));//该方向上的连续1的个数vector<vector<int>> left(N, vector<int>(N, 0));vector<vector<int>> down(N, vector<int>(N, 0));vector<vector<int>> right(N, vector<int>(N, 0));for(int i = 0; i < N; i++){for(int j = 0; j < N; j++){if(g[i][j] == 0)continue;left[i][j] = (j > 0 ? left[i][j-1] : 0) + 1;up[i][j] = (i > 0 ? up[i-1][j] : 0) + 1;}}for(int i = N-1; i >= 0; i--){for(int j = N-1; j >= 0; j--){if(g[i][j] == 0)continue;right[i][j] = (j < N-1 ? right[i][j+1] : 0) + 1;down[i][j] = (i < N-1 ? down[i+1][j] : 0) + 1;}}int ans = 0;for(int i = 0; i < N; i++){for(int j = 0; j < N; j++)ans = max(ans, min(left[i][j], min(right[i][j],min(up[i][j], down[i][j]))));}return ans;}
};

352 ms 87.7 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android启示录——开始Android旅途

为了明年可以开始进行android程序开发&#xff0c;开始从零开始学习android&#xff0c;仅以此代表第一步开始(*^_^*)&#xff0c;开始搭建环境…… 1. 软件下载 http://developer.android.com/sdk/index.html 下载Android开发所需的ADT、SDK....&#xff08;里面会有全部东西&…

机器学习基础—Kaggle泰坦尼克预测(完整分析)

1.引言 我们先找个简单的实际例子&#xff0c;来看看&#xff0c;所谓的数据挖掘或者机器学习实际应用到底是怎么样一个过程。 2.背景 2.1 关于Kaggle Kaggle是一个数据分析建模的应用竞赛平台&#xff0c;有点类似KDD-CUP&#xff08;国际知识发现和数据挖掘竞赛&#xff09;&…

Spark Executor解析

目录 1、Spark Executor如何工作 2、Spark Executor工作源码 1、Spark Executor如何工作 当Driver发送过来Task的时候&#xff0c;其实是发送给CoarseGrainedExecutorBackend这个RPCEndpoint&#xff0c;而不是直接发送给Executor&#xff08;Executor由于不是消息循环体永远…

Cassandra1.2文档学习(12)—— hint机制

参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_about_hh_c.html Hint机制是Cassandra的特性当一致性不要求时保证了写入的高可用性。但临时故障发生如网络问题&#xff0c;Hint机制显著地提升了反应的一致性。通过配置c…

LeetCode 381. O(1) 时间插入、删除和获取随机元素 - 允许重复(vector + 哈希)

文章目录1. 题目2. 解题1. 题目 设计一个支持在平均 时间复杂度 O(1) 下&#xff0c; 执行以下操作的数据结构。 注意: 允许出现重复元素。 insert(val)&#xff1a;向集合中插入元素 val。remove(val)&#xff1a;当 val 存在时&#xff0c;从集合中移除一个 val。getRando…

Stage划分和Task最佳位置

目录 1、Job Stage划分 2、Task最佳位置 3、总结 3.1 Stage划分总结&#xff1a; 3.2 Task最佳位置总结&#xff1a; 1、Job Stage划分 Spark Application中因为不同的Action触发众多的Job&#xff0c;也就是说一个Application中可以有很多的Job&#xff0c;每个Job是由是…

LwIP编译方法以及选项说明

条件编译命令作用说明IP_SOF_BROADCAST LWIP_IGMP 转载于:https://www.cnblogs.com/motadou/p/3537581.html

LeetCode 1636. 按照频率将数组升序排序(哈希+排序)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums &#xff0c;请你将数组按照每个值的频率 升序 排序。 如果有多个值的频率相同&#xff0c;请你按照数值本身将它们 降序 排序。 请你返回排序后的数组。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2,2,2,3] 输出…

Ubuntu16.04直接修改root密码

Ubuntu16.04系统中&#xff0c;因为误操作导致管理员密码丢失或无效&#xff0c;并且忘记root密码&#xff0c;此时无法进行任何root/sudo权限操作。可以通过GRUB重新设置root密码&#xff0c;并恢复管理员账户到正常状态。 工具/原料 • Ubuntu16.04操作系统 重置root密码 启…

TaskScheduler相关

目录 1、DAGScheduler与TaskScheduler 2、TaskScheduler与SchedulerBackend 3、任务调度过程总结 1、DAGScheduler与TaskScheduler DAGScheduler面向我们整个Job划分出了Stage&#xff0c;划分了Stage是从后往前划分的&#xff0c;执行的时候是从前往后&#xff0c;每个Stag…

网上支付心案例payment

案例的作用及用法参考该类的说明注释 工具类分别有&#xff1a; package cn.itcast.utils; import java.util.Properties; /** * 读取配置文件 * */ public class ConfigInfo { private static Properties cache new Properties(); static{ try …

LeetCode 1637. 两点之间不包含任何点的最宽垂直面积

文章目录1. 题目2. 解题1. 题目 给你 n 个二维平面上的点 points &#xff0c;其中 points[i] [xi, yi] &#xff0c;请你返回两点之间内部不包含任何点的 最宽垂直面积 的宽度。 垂直面积 的定义是固定宽度&#xff0c;而 y 轴上无限延伸的一块区域&#xff08;也就是高度为…

有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和

原题:有一序列a&#xff0c;大小为n&#xff0c;分为2部分,序列元素的值任意整形数&#xff0c;无序&#xff1b; 要求&#xff1a;通过交换a,b中的元素&#xff0c;使[序列a元素的和]与[序列b元素的和]之间的差最小&#xff0c;用python写。 #codingutf-8 # 1.将两序列合并为一…

Task执行流程

1、源码走读 &#xff08;1&#xff09;当Driver中的SchedulerBackend&#xff08;Standalone模式为CoarseGrainedSchedulerBackend&#xff09;给ExecutorBackend&#xff08;Standalone模式为CoarseGrainedExecutorBackend&#xff09;发送LaunchTask之后&#xff0c;Coarse…

一段挂起进程中所有线程的代码

今天看书核心编程看到第7章&#xff0c;中的一段代码很有意思&#xff0c;win7下对记事本进程进行测试&#xff0c;可以挂起&#xff0c;挺有意思的 //windows核心编程 第5版中的一段代码 /* 函数功能:挂起进程中的所有线程 参数1:进程ID 参数2:若为TRUE时对进程中的所有线程调…

LeetCode 1638. 统计只差一个字符的子串数目(DP)

文章目录1. 题目2. 解题2.1 暴力枚举2.2 DP1. 题目 给你两个字符串 s 和 t &#xff0c;请你找出 s 中的非空子串的数目&#xff0c;这些子串满足替换 一个不同字符 以后&#xff0c;是 t 串的子串。 换言之&#xff0c;请你找到 s 和 t 串中 恰好 只有一个字符不同的子字符串…

Airflow简介

1、什么是Airflow Airflow 是一个 Airbnb 的 Workflow 开源项目&#xff0c;使用Python编写实现的任务管理、调度、监控工作流平台。Airflow 是基于DAG(有向无环图)的任务管理系统&#xff0c;可以简单理解为是高级版的crontab&#xff0c;但是它解决了crontab无法解决的任务…

Flask简介与简单项目操作流程

Flask框架简介Flask诞生于2010年&#xff0c;是Armin ronacher&#xff08;人名&#xff09;用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架。它主要面向需求简单的小应用。Flask本身相当于一个内核&#xff0c;其他几乎所有的功能都要用到扩展&#xff08;邮件扩展Fl…

LeetCode 1640. 能否连接形成数组(哈希)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 arr &#xff0c;数组中的每个整数 互不相同 。 另有一个由整数数组构成的数组 pieces&#xff0c;其中的整数也 互不相同 。请你以 任意顺序 连接 pieces 中的数组以形成 arr 。但是&#xff0c;不允许 对每个数组 pieces[i]…

python基本知识、数据库、网络、编程等总结

Python语言特性 1 Python的函数参数传递 看两个例子: a 1 def fun(a):a 2 fun(a) print a # 1 a [] def fun(a):a.append(1) fun(a) print a # [1] 所有的变量都可以理解是内存中一个对象的“引用”&#xff0c;或者&#xff0c;也可以看似c中void*的感觉。 通过id来看引…