LeetCode 第 53 场双周赛(三)

简介: LeetCode 第 53 场双周赛(三)

大家好,这里是一起打 Leetcode 竞赛系列文章的第 5 篇。

本周有周赛和双周赛,本文是对上午的双周赛 Biweekly Contest 53 的简单讲解和评论。以下会包括每一题的简单讲解,代码,难度分析,以及一些个人对这题的看法等,希望大家喜欢!

注意 : 题解并不一定都是最优解(代码以 pass 了 LeetCode 的 Oline Judge 为准),文章初衷是给读者们提供一定的想法和问题的解决方案。

前言 : 参加 Contest 的好处

  1. 每周抽点时间去练习和学习新的题目这对于个人的编程能力与问题解决能力都有很大的帮助。
  2. 在规定的时间内解决一定的题目,这和真实的OA (Online Assessment) 或者 Onsite 面试是一样的,可以把它当作一个很好的 Mock 练习机会。
  3. 当你有碰到做不出的题目的时候,你能知道自己的弱项在哪里,然后可以根据这进行加强和练习,比赛是一面给自己的镜子。

对本场比赛的一些看法

本场比赛难度相对比较正常,都是比较常规的题目,第三题稍微有点难度需要一点思考。

1876. 简单的暴力签到题1877. 一道贪心和双指针题目1878. 一道观察型的题目1879. 使用 bit 进行压缩的DP题目


1878 Get Biggest Three Rhombus Sums in a Grid

题意:

此题强烈建议去看原题,原题里的图给出了很好的解释。

给你一个二维数组,找出所有的四角形和里最大的三个 unique,如果没有三个,则返回全部。什么是四角形?!

0 1 0  1 0 1 0 1 0

0 0 1 0 00 1 0 1 01 0 0 0.10 1 0 1 00 0 1 0 0

为了方便以下的思路解释,我们称以下的斜线分别为左斜线和右斜线0 0 10 1 0  (左斜线)1 0 0

1 0 00 1 0 (右斜线)0 0 1

思路:

  1. 我们首先对每个数字进行长度为 1,2,3 . . . 的左右斜线和进行储存
  2. 我们用 dpicnt 表示以 (i , j)为起点长度为cnt 的左斜线和。dpicnt 表示以 (i , j)为起点长度为cnt 的右斜线和
  3. 如果当前位置是  (i , j),我们想求以 (i , j) 为起点长度为 cnt 的四角形和。sum = dpicnt + dpicnt + dpi+cntcnt + dpi+cntcnt - mati - mati+2*cnt - mati+cnt - mati+cnt。公式看起来有点复杂,代码里的comment图会进行更详细解释。 简单点来说,就是把四角形的四条线加起来
  4. 当然,要注意check 看看是否outbound

代码:

classSolution {

   publicint[] getBiggestThree(int[][] mat) {

       intn=mat.length,m=mat[0].length;

       intdp[][][][]=newint[n][m][Math.max(n,m)+1][2];

       TreeSet<Integer>tree=newTreeSet<>();

       

       for(inti=0;i<n;i++){

           for(intj=0;j<m;j++){

               intr=i,c=j;

               intsum=0;

               intcnt=0;

               while(r<n&&c>=0){

                   sum+=mat[r++][c--];

                   dp[i][j][cnt++][0]=sum;

               }

               

               sum=0;

               r=i;c=j;

               cnt=0;

               while(r<n&&c<m){

                   sum+=mat[r++][c++];

                   dp[i][j][cnt++][1]=sum;

               }

               

           }

       }

       

       

       for(inti=0;i<n;i++){

           for(intj=0;j<m;j++){

               tree.add(mat[i][j]);//单个需要进行特殊处理

               for(intcnt=1;cnt<=n;cnt++){

                   if(i+cnt*2>=n||j-cnt<0||j+cnt>=m){//检查outbound

                       break;

                   }

                   intsum=dp[i][j][cnt][0] +dp[i][j][cnt][1] +dp[i+cnt][j-cnt][cnt][1] +dp[i+cnt][j+cnt][cnt][0] -mat[i][j] -mat[i+2*cnt][j] -mat[i+cnt][j-cnt] -mat[i+cnt][j+cnt];

                   tree.add(sum);

               }

           }

       }

       

         

       //转换回array

       List<Integer>list=newArrayList<>(tree);

       Collections.reverse(list);

       intres[]=newint[Math.min(3,list.size())];

       for(inti=0;i<res.length;i++){

           res[i]=list.get(i);

       }

       returnres;

   }

}

//假设以下数组

//0 2 0

//3 0 5     如果我们求长度是1的四角新,这里的例子由 (2 3 4 5)组成,它的和是 14

//0 4 0     dp[0][1][1][0] = 2+3 = 5   dp[0][1][1][1] = 2+5 = 7

//          dp[1][0][1][1] = 3+4 = 7   dp[1][2][1][0] = 5+4 = 9

//          由于四个角被重复计算,我们需要最后把他们减去

//          (2+3) + (3+4) + (2+5) + (5 + 4) - (2 + 3 + 4 + 5) = 28 - 14 = 14

//简单来说,就是把四角形的四条线加起来

空间复杂度和时间复杂度:

  • 时间复杂度:O(nm min(n,m))
  • 空间复杂度:O(nm min(n,m))
目录
相关文章
资源块|带你读《5G空口特性与关键技术》之九
3GPP TS38.211 中对 Point A 进行了定义。需要说明的是,2018/6 版本的TS38.211-f20 中的定义在 2018/9 版本中没有变化,不过在2018/12 版本 TS38.211-f40 中,基于 RAN1#94b 会议的决议进行了修改,有关信息请参看 RAN1#94b会议报告以及提案 R1-1811817 和 R11810834。
13267 2
资源块|带你读《5G空口特性与关键技术》之九
|
8月前
|
编解码 监控 算法
基于 YOLOv8 的无人机位置捕捉与识别检测系统 [目标检测完整源码]
本项目基于YOLOv8构建无人机视觉识别系统,支持小目标检测、多源输入(图像/视频/摄像头)及实时定位。含完整训练代码、预训练模型、标注数据集与PyQt5可视化界面,开箱即用,便于部署与二次开发。
744 1
基于 YOLOv8 的无人机位置捕捉与识别检测系统 [目标检测完整源码]
|
11月前
|
人工智能 弹性计算 自然语言处理
史上首次!万卡AI集群支撑双11,通义千问大规模落地
2025年双11,阿里云提供超千万核ECS算力及万卡灵骏智算集群,支撑淘宝推荐等核心业务性能提升超30%。通义千问大模型大规模落地,Qwen-MT单日调用超14亿次,助力商品出海、客服与经营分析,全面赋能双11智能化升级。
1473 0
史上首次!万卡AI集群支撑双11,通义千问大规模落地
|
11月前
|
人工智能 安全
Gartner®报告:阿里云位列GenAI云基础设施、工程、模型特性维度全球第三
阿里云在Gartner四大GenAI新兴市场象限中均位列领导者,基础设施、工程、模型及知识管理维度全面领先,其中三项“特性”指标居全球第三、亚太第一,彰显其“云+AI”全栈技术实力与市场竞争力。
544 0
|
人工智能 缓存 Cloud Native
DeepSeek-R1 来了,从 OpenAI 平滑迁移到 DeepSeek的方法
Higress 作为一款开源的 AI 网关工具,可以提供基于灰度+观测的平滑迁移方案。
2798 263
|
8月前
|
SQL 人工智能 自然语言处理
电商行业有哪些agent应用(2026年2月最新)
本文探讨2026年电商智能化趋势,聚焦三大AI Agent:Quick Service(全链路智能客服)、Quick BI“智能小Q”(对话式数据分析)与Data Agent(企业级数据治理专家),展现其如何以感知、规划、决策与执行能力,重塑服务、运营与决策闭环。
|
消息中间件 负载均衡 物联网
乐刻运动:基于 RocketMQ + MQTT 实现健身产业数字化升级
乐刻运动通过采用阿里云的云消息队列 RocketMQ 版和云消息队列 MQTT 版,不仅提升了系统的实时数据处理能力,还增强了系统的可扩展性、可靠性和性能,为业务的持续发展和流畅的用户体验,提供了坚实的技术支持,进一步推动了数字经济与健身产业的深度融合。
816 128
|
人工智能 程序员 测试技术
游戏开发成本认知鸿沟:从民间臆测到3A现实的残酷距离-优雅草卓伊凡
游戏开发成本认知鸿沟:从民间臆测到3A现实的残酷距离-优雅草卓伊凡
951 16
游戏开发成本认知鸿沟:从民间臆测到3A现实的残酷距离-优雅草卓伊凡
|
机器学习/深度学习 数据采集 监控
MyEMS开源能源管理系统实际案例分析
MyEMS开源能源管理系统已在制造业、商业地产、医疗、工业园区等多个领域成功应用,通过设备级监控、工艺优化、智能调度等手段,帮助企业实现节能降耗、提升能效与管理透明度。结合AI预测、多系统协同及ISO标准适配,助力企业达成绿色转型与合规目标。
567 0
|
人工智能 开发框架 小程序
工会成立100周年纪念,开发职工健身AI运动小程序、APP方案推荐
为庆祝中华全国总工会成立100周年,特推出基于AI技术的智能健身系统,以小程序和APP形式呈现,助力职工健康生活。方案包括:1) 小程序插件,支持多种运动识别,开箱即用;2) APP插件,提供更高精度的运动检测;3) 成熟的「AI乐运动」系统,支持赛事活动管理。这些方案满足不同需求,推动全民健身体验升级,彰显工会对职工健康的关怀。