LeetCode 1878. 矩阵中最大的三个菱形和(模拟)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你一个 m x n 的整数矩阵 grid 。

菱形和 指的是 grid 中一个正菱形 边界 上的元素之和。
本题中的菱形必须为正方形旋转45度,且四个角都在一个格子当中。
下图是四个可行的菱形,每个菱形和应该包含的格子都用了相应颜色标注在图中。
在这里插入图片描述

注意,菱形可以是一个面积为 0 的区域,如上图中右下角的紫色菱形所示。

请你按照 降序 返回 grid 中三个最大的 互不相同的菱形和 。
如果不同的和少于三个,则将它们全部返回。

示例 1:
在这里插入图片描述

输入:grid = [[3,4,5,1,3],[3,3,4,2,3],[20,30,200,40,10],[1,5,5,4,1],[4,3,2,2,5]]
输出:[228,216,211]
解释:最大的三个菱形和如上图所示。
- 蓝色:20 + 3 + 200 + 5 = 228
- 红色:200 + 2 + 10 + 4 = 216
- 绿色:5 + 200 + 4 + 2 = 211

示例 2:
在这里插入图片描述

输入:grid = [[1,2,3],[4,5,6],[7,8,9]]
输出:[20,9,8]
解释:最大的三个菱形和如上图所示。
- 蓝色:4 + 2 + 6 + 8 = 20
- 红色:9 (右下角红色的面积为 0 的菱形)
- 绿色:8 (下方中央面积为 0 的菱形)
示例 3:
输入:grid = [[7,7,7]]
输出:[7]
解释:所有三个可能的菱形和都相同,所以返回 [7] 。提示:
m == grid.length
n == grid[i].length
1 <= m, n <= 100
1 <= grid[i][j] <= 10^5

https://leetcode-cn.com/contest/biweekly-contest-53/problems/get-biggest-three-rhombus-sums-in-a-grid/
https://leetcode-cn.com/problems/get-biggest-three-rhombus-sums-in-a-grid/

2. 解题

  • 不要害怕,就是暴力模拟
class Solution {
public:vector<int> getBiggestThree(vector<vector<int>>& g) {int m = g.size(), n = g[0].size();set<int> res;vector<vector<int>> dir  ={{1,-1},{1,1},{-1,1},{-1,-1}};for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){  // (i, j) 为中心res.insert(g[i][j]);for(int len = 1; len <= max(m,n); len++){if(i+len>=m || i-len<0 || j+len >= n || j-len < 0)break;int x = i-len, y = j; // 最高点开始int sum = 0;for(int k = 0; k < 4; k++) // 4条边{int step = len;//每边走len步while(step--){x += dir[k][0];y += dir[k][1];sum += g[x][y];}}res.insert(sum);}}}vector<int> ans;while(res.size() && ans.size() < 3){  	// 取出最大的3个auto it = res.end();it--;ans.push_back(*it);res.erase(it);}return ans;}
};

500 ms 56.8 MB C++


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

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

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

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

相关文章

计算尖峰电流的目的_入门必看!负荷计算的目的、方法以及原则详解

感谢关注【易筑电气】&#xff0c;我们会定期为您推送最新的电气资讯和各类实用干货&#xff0c;欢迎有料的电气设计师加入我们的QQ交流群&#xff1a;571819142。想了解我们的线上讲师招募计划&#xff1f;添加QQ&#xff1a;3335847624 开启新世界~负荷计算目的和意义低压供配…

上下伸缩代码_CQRS之旅——旅程4(扩展和增强订单和注册限界上下文)

旅程4&#xff1a;扩展和增强订单和注册限界上下文进一步探索订单和注册的有界上下文。“我明白&#xff0c;如果一个人想看些新鲜的东西&#xff0c;旅行并不是没有意义的。”儒勒凡尔纳&#xff0c;环游世界80天对限界上下文的更改&#xff1a;前一章详细描述了订单和注册限界…

LeetCode 1879. 两个数组最小的异或值之和(状态压缩DP)

文章目录1. 题目2. 解题2.1 回溯2.2 状态压缩DP1. 题目 给你两个整数数组 nums1 和 nums2 &#xff0c;它们长度都为 n 。 两个数组的 异或值之和 为 (nums1[0] XOR nums2[0]) (nums1[1] XOR nums2[1]) ... (nums1[n - 1] XOR nums2[n - 1]) &#xff08;下标从 0 开始&am…

二叉排序树的后序遍历序列必然是递增的_剑指offer 33——二叉搜索树的后序遍历序列...

本题主要在于考察对二叉搜索树和后序遍历的理解。原题输入一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true&#xff0c;否则返回 false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树&#xff1a;5 / 2 6…

LeetCode 1880. 检查某单词是否等于两单词之和

文章目录1. 题目2. 解题1. 题目 字母的 字母值 取决于字母在字母表中的位置&#xff0c;从 0 开始 计数。即&#xff0c;a -> 0、b -> 1、c -> 2&#xff0c;以此类推。 对某个由小写字母组成的字符串 s 而言&#xff0c;其 数值 就等于将 s 中每个字母的 字母值 按…

查询去除空值_SQL数据处理(五):SQL多表查询

一. 表的加法加法(union)。合并两张数据表course和course1/去除重复行重合【select 课程号,课程名称 from course union select 课程号,课程名称 from course1;】 输出结果两个表合并的数据若要保留重复的行数据(union all)【select 课程号,课程名称 from course union all sel…

WPS Office文档未保存怎么恢复

有时候用WPS Office时&#xff0c;文档还没保存&#xff0c;因为电脑卡死或者关机&#xff0c;再次打开时编辑的内容都不见了&#xff0c;这个时候可以利用WPS自带的备份功能来恢复文档&#xff0c;表格、幻灯片、文档都是可以的。 首先单击WPS左上角的按钮&#xff0c;选择&qu…

LeetCode 664. 奇怪的打印机(区间DP)

文章目录1. 题目2. 解题1. 题目 有台奇怪的打印机有以下两个特殊要求&#xff1a; 打印机每次只能打印由 同一个字符 组成的序列。每次可以在任意起始和结束位置打印新字符&#xff0c;并且会覆盖掉原来已有的字符。 给你一个字符串 s &#xff0c;你的任务是计算这个打印机…

程序闪退怎么运行_苹果应用程序崩溃闪退怎么办?如何解决苹果设备的软故障?...

你们在使用苹果设备的时候是不是经常遇到程序卡死&#xff0c;或者苹果设备假死的情况&#xff1f;如果您遇到程序崩溃闪退或报错的时候&#xff0c;请不要慌张&#xff0c;按照以下方法解决问题。苹果设备它是应用程序问题还是设备故障&#xff1f;首先&#xff0c;您必须弄清…

lxrun不是内部或外部命令_在Win10 安装 WSL的Linux子系统,解决cmd中执行lxrun时提示“不是内部或外部命令”...

Win10 安装Linux子系统原理就是安装一个&#xff08;Linux系统的&#xff09;应用程序。使用应用程序一般的使用Linux子系统&#xff0c;非常方便。第一步&#xff1a;启用开发者模式启用开发者模式&#xff0c;其实很简单&#xff0c;本人参考的是该文章&#xff1a;手把手教你…

LeetCode 1886. 判断矩阵经轮转后是否一致

文章目录1. 题目2. 解题1. 题目 给你两个大小为 n x n 的二进制矩阵 mat 和 target 。 现 以 90 度顺时针轮转 矩阵 mat 中的元素 若干次 &#xff0c;如果能够使 mat 与 target 一致&#xff0c;返回 true &#xff1b; 否则&#xff0c;返回 false 。 示例 1&#xff1a; …

ggplot2中显示坐标轴_qplot()——ggplot2的快速绘图

先前写过几篇用ggplot2进行基本绘图的文章&#xff0c;但对于初学者&#xff0c;或只需绘制简单图形时&#xff0c;这些命令显得繁琐&#xff0c;这里介绍ggplot2中的快速绘图函数qplot(). 此函数相对能较快速便捷地绘制图形。往期文章&#xff1a;张光耀&#xff1a;ggplot2数…

LeetCode 879. 盈利计划(动态规划)

文章目录1. 题目2. 解题1. 题目 集团里有 n 名员工&#xff0c;他们可以完成各种各样的工作创造利润。 第 i 种工作会产生 profit[i] 的利润&#xff0c;它要求 group[i] 名成员共同参与。如果成员参与了其中一项工作&#xff0c;就不能参与另一项工作。 工作的任何至少产生…

python 数字、字符串与 time时间/日期 的转换

获取当前时间戳 >>> import time >>> num time.time() # 当前时间戳, 7位浮点 >>> type(num) <class float> >>> num 1623302086.1892786数字 转 时间 >>> t time.localtime(num) # 数字 转 时间 >>> type(t…

Convert Windows 32bit dirver to Windows 64bit

Pre-condition: 1.source code(vc6.0WDK based) Development environment: 2.VS2013 3.WDK 8/8.1 Steps: 1.Create a new project. File->New->Visual C->Windows Driver 2.Copy .c and .h source code to project 3.Modify project property xxx属性页->配置属性-…

小程序 模糊查询_[轻应用小程序]如何使用信息查询功能?

本文内容结构如下图一、查询功能是什么&#xff1f;有什么作用&#xff1f;对于企业&#xff0c;会有一些和自身业务相关的数据&#xff0c;需要给到客户提供“查询信息”或“查询缴费”服务。查询信息&#xff1a;学校、培训机构&#xff1a;查询成绩。人力招聘&#xff1a;面…

LeetCode 1887. 使数组元素相等的减少操作次数(map)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums &#xff0c;你的目标是令 nums 中的所有元素相等。完成一次减少操作需要遵照下面的几个步骤&#xff1a; 找出 nums 中的 最大 值。记这个值为 largest 并取其下标 i &#xff08;下标从 0 开始计数&#xff09;。如果…

mqtt协议详解_阿里云物联网平台使用心得(七)MQTT协议14个报文总览

大家好&#xff0c;物联网爱好小组成员超子&#xff0c;又和大家见面了&#xff0c;超子我能力有限&#xff0c;水平不高&#xff0c;有什么错误的地方&#xff0c;欢迎板砖。超子将参考《MQTT-3.1.1标准协议中文版》PDF手册&#xff0c;详解每个报文的格式&#xff0c;以及如何…

service启动activity_「 Android 10 四大组件 」系列—Service 的 quot; 启动流程 quot;

作者&#xff1a;DeepCoder核心源码关键类路径Service 的启动过程相对 Activity 的启动过程来说简单了很多&#xff0c;我们都知道怎么去创建和启动一个 Service&#xff0c; 那么你有没有从源码角度研究过 Service 启动后在系统层是如何运作的 &#xff1f;第一次看我文章的小…

天池 在线编程 输入流

文章目录1. 题目2. 解题1. 题目 描述 给出两个输入流 inputA 和 inputB(包含退格符), 如果两个输入流最后的结果相等&#xff0c;输出 YES&#xff0c;否则输出 NO。 输入字符只包括小写字母和<。 输入流长度不超过10000。示例 样例1 输入: inputA "abcde<<&q…