今天的刷题记录:螺旋矩阵、区间和、开发商购买土地

简介: 本篇介绍了三个经典算法问题:螺旋矩阵通过控制边界按圈遍历;区间和利用前缀和优化求和;开发商买地则采用二维前缀和思想,枚举最优切割方式。三题均注重优化思路与边界处理。

1. 螺旋矩阵

这题的思路其实挺直观的,就是控制上下左右四个边界,一圈一圈地往里收缩。
具体做法:

1.先从左往右,把当前最上面一行加进去,然后 top 往下移动。

2.再从上往下,把当前最右边一列加进去,然后 right 往左移动。

3.接着从右往左,把当前最下面一行加进去,然后 bottom 往上移动。

4.最后从下往上,把当前最左边一列加进去,然后 left 往右移动。

这里有两个坑需要注意:

从右往左 和 从下往上 之前,要先判断当前的行数或列数是否还够用,否则可能会重复遍历或者越界。收缩顺序不能乱,每收缩一步都要更新对应的边界。这样一圈圈收下去,就能把矩阵按螺旋顺序遍历出来。

2. 区间和

区间和这类题,前缀和是神器。
我的做法是先建两个数组:

第一个数组是原始数据 vec。

第二个数组是累加和数组 p,其中 p[i] 表示 vec[0] 到 vec[i] 的和。

有了 p 之后,要求任意区间 [a, b] 的和,只要用:

p[b] - p[a-1]   # a > 0

p[b]            # a == 0

就能 O(1) 得到答案,比每次循环累加快多了。

3. 开发商购买土地

这题和区间和的思路挺像,但换成了二维版本。

做法是这样的:

先算出矩阵的总和 sum。

再分别算出每一行的总和(横向统计)和每一列的总和(纵向统计)。

枚举所有可能的切割位置:

横切:从上往下累加行和,计算两边差值。

竖切:从左往右累加列和,计算两边差值。

取所有差值的最小值,就是最优切法。

目录
相关文章
|
6月前
|
文字识别 计算机视觉 Python
我用 Python 写了一个自动裁剪答题卡区域的小工具(附代码)
本文分享了一种通过 OpenCV 自动裁剪答题卡中答题区域的方法。核心思路是利用答题区域四周的黑色角块进行定位:先通过自适应阈值增强对比度,再用 `cv2.findContours()` 找轮廓,并计算每个轮廓的“紧凑度”(面积 / 周长)筛选出接近方块的角块。最终根据四个角块的边界矩形裁剪出答题区。代码实现详细,适合初学者参考,同时提供了参数调整建议以适配不同图像条件。
225 10
|
4月前
|
Python
双指针的变体:滑动窗口与长度最小的子数组问题
滑动窗口是一种高效的双指针技巧,常用于解决数组或字符串中的连续子区间问题。通过维护一个由 left 和 right 指针界定的窗口,动态调整其大小,以寻找满足特定条件的最优解。它常用于求解连续子数组的最值、字符子串判断等,如“长度最小的子数组”、“水果采摘”、“最小覆盖子串”等问题。核心思想是:在满足条件时收缩窗口,在不满足时扩展窗口,结合哈希表等结构维护窗口内状态,从而实现线性时间复杂度 O(n) 的高效求解。掌握滑动窗口的关键在于理解其模板结构,并灵活应对不同题目的状态维护需求。
85 0
|
7月前
|
人工智能 前端开发 JavaScript
打造了一个未来感十足的图书管理 App 个人页面
打造了一个未来感十足的图书管理 App 个人页面
188 25
|
6月前
从刷题中抽象出来的二分法思维模型
本文总结了二分法的核心理解与应用技巧,探讨了其适用条件与逻辑构建方法。通过明确单调性与边界性质,帮助读者从“凭感觉写”进阶到“有依据设计”,提升对查找、边界与插入位置等问题的掌控力。
136 1
|
7月前
|
人工智能 自然语言处理 安全
💻 Codex 来了:OpenAI 推出多任务软件工程 AI 代理,开发者工作方式将被重塑?
Codex 是 OpenAI 推出的一款云端智能开发代理,基于优化后的 Codex-1 模型,能够执行从代码编写、Bug 修复到 PR 提交的完整工程任务。通过 ChatGPT 的界面,用户可向 Codex 分配任务,它将在独立沙盒中运行并返回结果。Codex 支持多任务异步处理,遵循项目规范(AGENTS.md),并生成日志与测试报告以确保透明性。作为“AI 参与式开发”的里程碑,Codex 不仅提升效率,还可能重塑开发者角色,使他们从具体编码转向指导 AI 完成任务,推动软件工程进入意图驱动的新时代。
634 16
|
11月前
|
人工智能 开发框架 安全
Smolagents:三行代码就能开发 AI 智能体,Hugging Face 开源轻量级 Agent 构建库
Smolagents 是 Hugging Face 推出的轻量级开源库,旨在简化智能代理的构建过程,支持多种大语言模型集成和代码执行代理功能。
854 69
Smolagents:三行代码就能开发 AI 智能体,Hugging Face 开源轻量级 Agent 构建库
|
8月前
|
人工智能 新能源 BI
关于举办"2025年第五届全国大学生技术创新创业大赛"的通知
大赛已连续举办四届,举办以来大赛始终以“创新驱动,赋能就业”为目标,促进学生的创新创造能力,普及创新创业知识,拓宽就业创业渠道,挖掘创新人才,培育多元化的未来产业推进力量。自开赛以来,赛事受到百余所学校关注,十几所高校已立项,参赛人次达上万人,征集优秀商业计划书上千余份。本届新赛事将继续全面贯彻党的二十大精神,完整、准确、全面贯彻新发展理念,加快构建新发展格局,以传统产业的高端化升级和前沿技术的产业化落地为主线,以创新为动力,第五届赛事将开展优秀项目落地北京计划。
2490 4
|
存储 边缘计算 安全
边缘计算的概念和在IoT中的应用
随着物联网(IoT)设备数量的激增,传统的云计算模式面临着数据传输延迟和带宽压力等问题。边缘计算作为一种新的计算模式,通过将计算资源和服务部署到靠近数据源的位置,解决了这些问题。
288 2
|
开发工具
新人乘风者礼品兑换指南
仅限2023年11月15日(含11月15日)后入驻博主用于兑换礼品,此前完成入驻的博主按原邮寄方式进行。
4696 9
|
Java 数据库连接 Spring
Spring Boot 3.2.2整合MyBatis-Plus 3.5.5依赖不兼容问题
Spring Boot 3.2.2整合MyBatis-Plus 3.5.5依赖不兼容问题
847 0