Day 2[代码随想录]长度最小的子数组+螺旋矩阵II+区间和+开发商购买土地+数组总结篇
力扣 209给定一个含有 n 个正整数的数组和一个正整数 target找出该数组中满足其和 ≥ target 的长度最小的连续子数组并返回其长度。如果不存在符合条件的子数组返回 0。示例输入target 7, nums [2,3,1,2,4,3]输出2解释子数组 [4,3] 是该条件下的长度最小的子数组。提示1 ≤ target ≤ 1091 ≤ nums.length ≤ 1051 ≤ nums[i] ≤ 105暴力做法class Solution { public: int minSubArrayLen(int target, vectorint nums) { int len nums.size(); bool flag false; for (int i 0; i nums.size(); i) { int num 0; int len1 0; for (int j i; j nums.size(); j) { num nums[j]; if (num target) { flag true; len min(len, j - i 1); break; } } } if (!flag) { return 0; } else { return len; } } };不过这个超出了时间限制。滑动窗口法实际上还是一种双指针法起点由于 target 的限制是不可逆的所以说 j 变换的时候 i 的值不会清零重新来。举个例子来说1 2 3 100target 记作 101j0结束位置指针指向 1不够继续j1结束位置指针指向 2不够继续j2结束位置指针指向 3不够继续j3结束位置指针指向 100够了进入 while 循环先算出当前的子串长度len 选择更小的子串长度现在开始移动起始位置指针sum 减去当前初始位置值i 往后移动一位。这是进行一次初始位置指针的移动。然后进入第二次判定还是大于等于 target再来几次这里就省略了。下面进行返回值就好啦。class Solution { public: int minSubArrayLen(int target, vectorint nums) { int n nums.size(); int i 0; int len n 1; int sum 0; for (int j 0; j n; j) { sum nums[j]; while (sum target) { int sublen j - i 1; len len sublen ? sublen : len; sum - nums[i]; } } if (len n 1) return 0; else { return len; } } };59 螺旋矩阵 II给定一个正整数 n生成一个包含 1 到 n2 所有元素且元素按顺时针顺序螺旋排列的正方形矩阵。示例输入3 输出[[1, 2, 3], [8, 9, 4], [7, 6, 5]]这个题边界处理比较难要坚持循环不变量原则左闭右开就一直是左闭右开要不循环一定会出错。class Solution { public: vectorvectorint generateMatrix(int n) { vectorvectorint num(n, vectorint(n, 0)); int startx 0; int starty 0; int offset 1; int times n / 2; int mid n / 2; int i, j; int count 1; while (times--) { j starty; i startx; for (; j n - offset; j) { num[i][j] count; } for (; i n - offset; i) { num[i][j] count; } for (; j starty; j--) { num[i][j] count; } for (; i startx; i--) { num[i][j] count; } startx; starty; offset; } if (n % 2 ! 0) { num[mid][mid] count; } return num; } };要注意的是当 n 为奇数的时候中间会多出一个格子我们要单独赋值但是我们会出现两种错误想法ij 正好跑到了中间格子我们直接用 ij 赋值吧。当 n 等于 1 的时候不进入 while 循环无法赋值我们直接用 times 吧正好是 n/2。times 在循环中自减已经减成 0 了我们要新设置一个 mid 变量对中间的元素进行处理。前缀和题目描述给定一个整数数组 Array请计算该数组在每个指定区间内元素的总和。输入描述第一行输入为整数数组 Array 的长度 n接下来 n 行每行一个整数表示数组的元素。随后的输入为需要计算总和的区间直至文件结束。输出描述输出每个指定区间内元素的总和。输入示例5 1 2 3 4 5 0 1 1 3输出示例3 9数据范围0 n ≤ 100000#include iostream #include vector using namespace std; int main() { int n, a, b; cin n; vectorint vec(n); for (int i 0; i n; i) cin vec[i]; while (cin a b) { int sum 0; // 累加区间 a 到 b 的和 for (int i a; i b; i) sum vec[i]; cout sum endl; } }前缀和方法即利用一个小递推把前 n 项的和写进一个新数组pre[10] 表示pre[0] 到 pre[10] 的总和。i-1 是因为不能把第 i 项减去。#includebits/stdc.h using namespace std; const int MAX 1e5; int arr[MAX]; int pre[MAX]; int main() { int n; cin n; for (int i 0; i n; i) { cin arr[i]; pre[i] i 0 ? pre[i - 1] arr[i] : arr[i]; } int a, b; while (cin a b) { cout pre[b] - pre[a - 1] \n; } return 0; }C 中用 scanf 和 printf 可以减小耗时这里就不展示了。土地分配问题【题目描述】在一个城市区域内被划分成了 n × m 个连续的区块每个区块都拥有不同的权值代表着其土地价值。目前有两家开发公司A 公司和 B 公司希望购买这个城市区域的土地。现在需要将这个城市区域的所有区块分配给 A 公司和 B 公司。然而由于城市规划的限制只允许将区域按横向或纵向划分成两个子区域而且每个子区域都必须包含一个或多个区块。为了确保公平竞争你需要找到一种分配方式使得 A 公司和 B 公司各自的子区域内的土地总价值之差最小。注意区块不可再分。【输入描述】第一行输入两个正整数代表 n 和 m。接下来的 n 行每行输出 m 个正整数。输出描述请输出一个整数代表两个子区域内土地总价值之间的最小差距。【输入示例】3 3 1 2 3 2 1 3 1 2 3【输出示例】0【提示信息】如果将区域按照如下方式划分1 2 | 3 2 1 | 3 1 2 | 3两个子区域内土地总价值之间的最小差距可以达到 0。【数据范围】1 ≤ n, m ≤ 100n 和 m 不同时为 1暴力做法#includebits/stdc.h using namespace std; int main() { int n, m; cin n m; int sum 0; vectorvectorint vec(n, vectorint(m, 0)); for (int i 0; i n; i) { for (int j 0; j m; j) { cin vec[i][j]; sum vec[i][j]; } } vectorint horizontal(n, 0); for (int i 0; i n; i) { for (int j 0; j m; j) { horizontal[i] vec[i][j]; } } vectorint vertical(m, 0); for (int j 0; j m; j) { for (int i 0; i n; i) { vertical[j] vec[i][j]; } } int result INT_MAX; int horizontalCut 0; for (int i 0; i n; i) { horizontalCut horizontal[i]; result min(result, abs(sum - horizontalCut - horizontalCut)); } int verticalCut 0; for (int j 0; j m; j) { verticalCut vertical[j]; result min(result, abs(sum - verticalCut - verticalCut)); } cout result endl; }前缀和把行/列总和算出差值进行比较。这一版的优化是不单独建竖列和横列栈累加的时候直接比较count 中间更新一下#includebits/stdc.h using namespace std; int main() { int n, m; cin n m; int sum 0; vectorvectorint vec(n, vectorint(m, 0)); for (int i 0; i n; i) { for (int j 0; j m; j) { cin vec[i][j]; sum vec[i][j]; } } int result INT_MAX; int count 0; for (int i 0; i n; i) { for (int j 0; j m; j) { count vec[i][j]; if (j m - 1) result min(result, abs(sum - count - count)); } } count 0; for (int j 0; j m; j) { for (int i 0; i n; i) { count vec[i][j]; if (i n - 1) result min(result, abs(sum - count - count)); } } cout result endl; }数组总结篇数组是存放在连续内存空间上的相同类型数据的集合下标索引可以获取下标对应的数据数组下标都是从 0 开始的。数组内存空间的地址是连续的→删除或者增添元素的时候就难免要移动其他元素的地址。数组的元素是不能删的只能覆盖。vector 底层由 array 实现但是不是数组二维数组C 连续Java 不连续数组的经典题目二分法O(nlogn) 循环不变量原则双指针法O(n) 快指针慢指针在一个 for 循环内完成两个 for 循环的工作减小时间复杂度滑动窗口O(n) 要确定好如何移动窗口起始位置动态更新窗口大小模拟行为循环不变量原则要确定好边界前缀和前缀和方法即利用一个小递推把前 n 项的和写进一个新数组pre[10] 表示pre[0] 到 pre[10] 的总和。

相关新闻

Godot引擎VRM虚拟化身插件实战:从导入到高级控制全流程

Godot引擎VRM虚拟化身插件实战:从导入到高级控制全流程

1. 项目概述:为什么要在Godot里玩转VRM?如果你正在用Godot引擎捣鼓一些需要角色扮演、虚拟社交或者沉浸式体验的项目,比如一个独立游戏、一个虚拟直播工具,或者一个数字人交互应用,那么“虚拟化身”这个概念你肯定绕不…

2026/8/2 6:57:07 阅读更多 →
混合专家架构代码智能模型:DeepSeek-Coder-V2的技术突破与实践应用

混合专家架构代码智能模型:DeepSeek-Coder-V2的技术突破与实践应用

混合专家架构代码智能模型:DeepSeek-Coder-V2的技术突破与实践应用 【免费下载链接】DeepSeek-Coder-V2 DeepSeek-Coder-V2: Breaking the Barrier of Closed-Source Models in Code Intelligence 项目地址: https://gitcode.com/GitHub_Trending/de/DeepSeek-Cod…

2026/8/2 6:57:07 阅读更多 →
Minecraft世界管理终极指南:5大高效区块处理技巧揭秘

Minecraft世界管理终极指南:5大高效区块处理技巧揭秘

Minecraft世界管理终极指南:5大高效区块处理技巧揭秘 【免费下载链接】mcaselector A tool to select chunks from Minecraft worlds for deletion or export. 项目地址: https://gitcode.com/gh_mirrors/mc/mcaselector MCA Selector是一款专为Minecraft Ja…

2026/8/2 6:57:07 阅读更多 →

最新新闻

AI如何重塑TVC创作:从Prompt工程到视频生成的工作流革命

AI如何重塑TVC创作:从Prompt工程到视频生成的工作流革命

1. 当AI导演拿起可乐罐:一次TVC创作的范式革命 那天在行业群里,看到有人转了一条片子,标题是“可口可乐最新世界杯TVC”。点开一看,是那种典型的体育激情风格:绿茵场上汗水飞溅,观众席人浪沸腾,…

2026/8/2 7:44:25 阅读更多 →
Qwen3.6 MoE架构解析:3B激活参数如何实现超越31B模型的Agent编程能力

Qwen3.6 MoE架构解析:3B激活参数如何实现超越31B模型的Agent编程能力

1. 从“大模型”到“智能体”:Qwen3.6系列带来的新范式最近在AI圈子里,Qwen3.6系列的开源模型发布,尤其是它在Agent(智能体)编程能力上的表现,成了一个绕不开的话题。标题里那句“激活参数仅3B超越Gemma4-3…

2026/8/2 7:44:25 阅读更多 →
构建高可用AI编码工作流:从GPT-5.5传闻看Codex代理与英伟达API实战

构建高可用AI编码工作流:从GPT-5.5传闻看Codex代理与英伟达API实战

1. 从“GPT-5.5”的传闻说起:我们到底在期待什么?最近几天,我的技术圈和社交媒体时间线被一个词刷屏了:“GPT-5.5”。标题党们用着“刚刚发布”、“更强更快更贵”这样的字眼,再配上“英伟达工程师内测后声称‘失去它像…

2026/8/2 7:44:25 阅读更多 →
海外仓WMS费用管理功能盘点:如何避免赠品耗材被重复计费

海外仓WMS费用管理功能盘点:如何避免赠品耗材被重复计费

又到月底,作为东南亚三方海外仓从业者,我们又进入了紧张的客户对账阶段。干这行久了,除了仓储、配送这些核心环节,费用管理和账单精准度,也是非常磨人的细节,现在的客户都非常注意账单的透明度,…

2026/8/2 7:44:25 阅读更多 →
深圳中央空调维修-欧米到家金牌师傅全城区30分钟火速上门覆盖南山/福田/宝安/龙华等全域各区 专治不制冷/漏水/异响/跳闸

深圳中央空调维修-欧米到家金牌师傅全城区30分钟火速上门覆盖南山/福田/宝安/龙华等全域各区 专治不制冷/漏水/异响/跳闸

在深圳,中央空调突发故障是家庭、商铺与写字楼的高频烦心事——中央空调不制冷、内机漏水、外机异响跳闸、开机没反应等问题,常年高温高湿环境下极易集中爆发。很多用户会搜索“深圳中央空调维修”“深圳附近中央空调上门师傅”“深圳中央空调漏水维修电…

2026/8/2 7:44:25 阅读更多 →
为什么皮肤科医生不建议用家用 “电弧笔” 点痣祛斑?

为什么皮肤科医生不建议用家用 “电弧笔” 点痣祛斑?

在皮肤科门诊,几乎每个月都会接诊因自行使用 “点痣笔”“扫斑笔” 导致面部损伤的患者:有人留下了永久性的凹坑,有人长出了白斑,有人创面感染化脓,还有人误烧了可疑恶性痣延误诊疗。很多人会问:不就是个小…

2026/8/2 7:43:25 阅读更多 →

日新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/2 6:34:16 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/2 2:47:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/2 0:23:22 阅读更多 →