当前位置: 首页 > news >正文

算法第二天|209.长度最小的子数组,59.螺旋矩阵2, 区间和,开发商购买土地

209.长度最小的子数组

class Solution { public: int minSubArrayLen(int target, vector<int>& nums) { int num = nums.size(); int l = 0, ans = num + 1, sum = 0; for(int r = 0; r < num; r++){ sum += nums[r]; while(sum >= target){ ans = min(ans, r-l+1); sum -= nums[l]; l++; } } return ans <= num ? ans:0; } };

思路:滑窗,右指针循环迭代,数组内依次相加,检测到有超过target的比较最小的,减去左指针

58. 区间和

#include <iostream> #include <vector> using namespace std; int main() { int n, a, b; cin >> n; vector<int> arr(n); vector<int> ans(n); int temp = 0; for (int i = 0; i < n; i++) { cin >> arr[i]; temp += arr[i]; ans[i] = temp; } while (cin >> a >> b) { int sum; if (a == 0) sum = ans[b]; else sum = ans[b] - ans[a - 1]; cout << sum << endl; } }

思路:第一次接触到前缀和概念,在构造数组的时候,计算出区间和

59螺旋矩阵2

class Solution { int DIRS[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; public: vector<vector<int>> generateMatrix(int n) { vector ans(n, vector<int>(n)); int i = 0, j = 0, di = 0; for (int val = 1; val <= n * n; val++) { ans[i][j] = val; int x = i + DIRS[di][0]; int y = j + DIRS[di][1]; if (x < 0 || x >= n || y < 0 || y >= n || ans[x][y]) { di = (di + 1) % 4; } i += DIRS[di][0]; j += DIRS[di][1]; } return ans; } };

DIRS代表四个方向

开发商购买土地

#include <iostream> #include <vector> #include <climits> using namespace std; int main () { int n, m; cin >> n >> m; int sum = 0; vector<vector<int>> vec(n, vector<int>(m, 0)) ; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cin >> vec[i][j]; sum += vec[i][j]; } } // 统计横向 vector<int> horizontal(n, 0); for (int i = 0; i < n; i++) { for (int j = 0 ; j < m; j++) { horizontal[i] += vec[i][j]; } } // 统计纵向 vector<int> 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; }
http://www.jsqmd.com/news/596037/

相关文章:

  • 开箱即用:像素剧本圣殿快速体验,小白也能秒变专业编剧
  • XHS-Downloader:小红书内容采集的技术革新与实战指南
  • 如何快速掌握QMK Toolbox:面向初学者的完整固件刷写指南
  • 解锁旧设备潜能:通过OpenCore Legacy Patcher实现系统焕新的5个关键步骤
  • 支付宝立减金还能回收?最新热门渠道精选推荐 - 团团收购物卡回收
  • UnrealPakViewer:重新定义虚幻引擎Pak文件解析的高效开源工具完全指南
  • QMC音频解锁大师:3分钟让加密音乐重获自由的跨平台神器
  • 抖音下载器技术深度解析:从单视频到批量下载的完整实战指南
  • Kandinsky-5.0-I2V-Lite-5sWeb部署:Nginx反向代理+HTTPS安全访问配置
  • 2026支付宝立减金回收攻略:最优渠道推荐 - 团团收购物卡回收
  • 如何安全高效回收支付宝立减金?优质渠道推荐指南 - 团团收购物卡回收
  • 从FEKO仿真到ISAR成像:基于.ffe数据与RD算法的MATLAB实战指南
  • 终极指南:3个技巧让你轻松获取Steam创意工坊资源
  • PHP使用OCR技术识别图片中的文字
  • 【案例共创】码道小工匠,儿童跳绳智能计数系统开发实战
  • 完整方案:星图平台私有化部署Qwen3-VL:30B,通过Clawdbot接入飞书
  • numpy.nan Nan
  • macOS菜单栏终极整理方案:Ice工具完整使用指南
  • 优化Blazor渲染逻辑的实践
  • OpenClaw人人养虾:Linux
  • NVIDIA Profile Inspector显卡性能优化技巧:从硬件适配到效果验证的深度配置指南
  • Turbo Console Log插件:告别手动调试,提升前端开发效率的终极利器
  • Qwen3-14B私有部署镜像:Android Studio移动端AI应用原型开发
  • XUnity.AutoTranslator完全指南:从基础配置到高级应用
  • cv_unet_image-colorization入门必看:3步完成黑白照片AI上色(含CUDA加速配置)
  • Cosmos-Reason1-7B惊艳效果:多步数学证明+中间变量追踪完整展示
  • Qwen3.5-2B轻量化部署:4GB显存GPU跑通多模态推理的完整环境配置
  • NVIDIA Profile Inspector:解锁显卡隐藏性能的3大实用场景指南
  • Z-Image-Turbo-rinaiqiao-huiyewunv效果实测:RTX4090 vs RTX3060在Turbo模型下的帧率对比
  • ViGEmBus内核级虚拟手柄驱动技术深度解析