力扣383周赛第三题

本题的难点其实不在思路上,而是有些人遇到这种题就不想做了,题目太长,有点读不懂题。

只要先耐心下来把题读懂之后这题其实就没那么难了,读懂题之后还有一个关键点就是,我们怎么在1e8时间复杂度之内跑过呢?这个是我们的重难点,我们分析一下500*500的长宽的话,最少需要枚举多少个9宫格,我们以每个点为左上角的点进行枚举,大概需要枚举((500 - 3) + 1) * (500 - 3) + 1))个,这其实是有公式的,就是那个500都是n,m,那么我们最多只需要枚举250000个九宫格,然后判断一下这些九宫格是否符合要求小于或等于threodsold,这是2250000的复杂度,符合要求之后,我们再进行对九宫格求和求平均值,5500000的复杂度,如果想要更快速的话,可以用二维前缀和优化对九宫格求和这部分,但是赛时我就不求二维前缀和了,直接用这个就行,然后我们现在还有一个要求没有达到,那就是如何求多个区域的平均值,那么就需要记录每个区域在该坐标的平均值是多少,这个部分不会复杂度很高,最多有9个平均值,所以这个不用管。那么有了这些条件我们就可以过这题了,就是个大模拟的题

class Solution {
public:vector<int> val[511][511];int dx[4] = {0,-1,0,1};int dy[4] = {-1,0,1,0};vector<vector<int>> resultGrid(vector<vector<int>>& image, int threshold) {memset(val,0,sizeof(val));int n = image.size();int m = image[0].size();vector<vector<int>> ans(n,vector<int>(m,0));for(int i = 0;i < n;i++){for(int j = 0;j < m;j++){int left_x = i,left_y = j;int right_x = i + 2,right_y = j + 2;if(right_x >= n || right_y >= m) continue;bool flag = false;for(int x = left_x;x <= right_x;x++){for(int y = left_y;y <= right_y;y++){for(int k = 0;k < 4;k++){int a = dx[k] + x,b = dy[k] + y;if(a < left_x || a > right_x || b < left_y || b > right_y) continue;if(abs(image[x][y] - image[a][b]) > threshold) {flag = true;}}}}int sum = 0;if(!flag){for(int x = left_x;x <= right_x;x++){for(int y = left_y;y <= right_y;y++){sum += image[x][y];}}//out<<sum<<endl;int aveg = sum / 9;for(int x = left_x;x <= right_x;x++){for(int y = left_y;y <= right_y;y++){val[x][y].push_back(aveg);}}}}}a:for(int i = 0;i < n;i++){for(int j = 0;j < m;j++){int sum = 0;for(auto&e:val[i][j]) sum += e;int len = val[i][j].size();if(len){//cout<<sum<<endl;int aveg = sum / len;ans[i][j] = aveg;}else ans[i][j] = image[i][j];}}return ans;}
};

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

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

相关文章

问题:以下关于搜索OCPC说法错误的是()? #知识分享#知识分享#媒体

问题&#xff1a;以下关于搜索OCPC说法错误的是&#xff08;)&#xff1f; A&#xff0e;OCPC进入第二阶段&#xff0c;不能随意更换转化目标和页面 B&#xff0e;OCPC可以直接跳过第一阶段&#xff0c;直接开始跑第二阶段 C&#xff0e;开启OCPC计划后&#xff0c;系统就会…

Flink生产环境常见问题及解决方法

在Flink生产环境中&#xff0c;可能会遇到一些常见的问题。下面简单的介绍几个常见问题&#xff0c;并且提供一些解决方法&#xff0c;来帮助你更好地应对这些问题。 故障转移和高可用性 Flink提供了故障转移和高可用性机制&#xff0c;但在配置和使用时可能会遇到问题。如果…

Linux 网络编程 + 笔记

协议&#xff1a;一组规则 分层模型结构&#xff1a; OSI七层模型&#xff1a;物理层、数据链路层、网络层、传输层、会话层、表示层、应用层TCP/IP 4层模型&#xff1a;链路层/网络接口层、网络层、传输层、应用层 应用层&#xff1a;http、ftp、nfs、ssh、telnet、传输层&am…

过年前想要便宜寄快递,究竟还有什么渠道呢?

马上就是年关了&#xff0c;心情显得异常激动了&#xff0c;想到马上就可以吃到团圆的年夜饭了&#xff0c;小编和大家都是非常的开心了&#xff0c;还有春节期间的旅游&#xff0c;探亲&#xff0c;都是值得期待的事情了&#xff0c;亲戚朋友&#xff0c;邻里邻居之间会互相送…

python 视频硬字幕去除 内嵌字幕去除工具vsr

项目简介 开源地址&#xff1a;https://github.com/YaoFANGUK/video-subtitle-remover Video-subtitle-remover (VSR) 是一款基于AI技术&#xff0c;将视频中的硬字幕去除的软件。 主要实现了以下功能&#xff1a; 无损分辨率将视频中的硬字幕去除&#xff0c;生成去除字幕后…

【Linux】信号-下

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;【LeetCode】winter vacation training 目录 &#x1f449;&#x1f3fb;信号递达&#xff0c;信号未决&#x…

字符串左旋

题目&#xff1a;字符串左旋 内容&#xff1a;实现一个函数&#xff0c;可以左旋字符串中的K个字符。 例如&#xff1a; ABCDEF左旋一个字符可以得到BCDEFA ABCDEF左旋两个字符可以得到CDEFAB 方法一&#xff1a;移动字符 #include <stdio.h> #include <string.h>c…

Faster-RCNN 和 Mask-RCNN详解

Faster-RCNN &#xff0c;Mask-RCNN原理 一、摘要1.1 图像分割1.2 语义分割与实例分割 二、Faster-RCNN2.1 Faster-RCNN模型架构2.2 &#x1f34a;深度卷积网络&#xff08;backbone&#xff09;2.3 &#x1f34e;RPN&#xff08;Region Proposal Network&#xff09;2.4 &…

VS2019 添加程序包

dotnet add package AlibabaCloud.SDK.Bailian20230601 来提示添加程序包 选择菜单栏 项目----管理NuGet程序包 输入程序包的名称&#xff0c;然后添加即可&#xff0c; 这只是给当前工程添加&#xff0c;并不是给VS添加&#xff0c;所以你打开新工程&#xff0c;需要使用的话…

Android BitmapShader setLocalMatrix缩放Bitmap高度重新onMeasure,Kotlin

Android BitmapShader setLocalMatrix缩放Bitmap高度重新onMeasure&#xff0c;Kotlin <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://sc…

ps基本操作

目录 ps基本操作 ps基本操作

【C++入门学习指南】:函数重载提升代码清晰度与灵活性

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; C入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、函数重载1.1 函数重载的概念1.2 函数重载的作用1.3 C支持函数重载的原理1.4 扩展 &…