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

1.20 LeetCode总结(基本算法)_模拟类

编程总结

每每刷完一道题后,其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧

1599. 经营摩天轮的最大利润


intmaxi(intx,inty){returnx>y?x:y;}intminOperationsMaxProfit(int*customers,intcustomersSize,intboardingCost,intrunningCost){if(boardingCost*4<=runningCost){return-1;}intcur=0;// 当前时间等待人数(登轮前)intprofit=0;//(当前总利润)intmax=0;//(最大利润持续更新)intans=0;//(返回的最大转动次数)//有人来的时间段先根据已有时间线按部就班进行转动for(inti=0;i<customersSize;i++){cur+=customers[i];if(cur>=4){// 大于等于四个就四个一批处理profit+=4*boardingCost-runningCost;cur=cur-4;}else{// 小于4则清空人数profit+=cur*boardingCost-runningCost;cur=0;}if(profit>max){ans=i+1;// 本次操作下来看利润能否增长,是则更新答案}max=maxi(profit,max);}//没有人来了以后,处理剩下等待的人intc=0;//记录转动次数while(cur>=4)//四个一批处理获取最大利润{profit+=4*boardingCost-runningCost;cur=cur-4;c++;if(profit>max)//更新结果ans=customersSize+c;max=maxi(profit,max);//更新最大利润}if(cur<4&&cur>0&&cur*boardingCost>runningCost)// 处理落单的1-3人,前提是能使利润正增长{profit+=cur*boardingCost-runningCost;cur=0;if(profit>max)ans=customersSize+c+1;max=maxi(profit,max);}if(ans==0)//没有使利润>0的情况,返回-1return-1;returnans;}

885. 螺旋矩阵 III

在 rows x cols 的网格上,你从单元格 (rStart, cStart) 面朝东面开始。网格的西北角位于第一行第一列,网格的东南角位于最后一行最后一列。
你需要以顺时针按螺旋状行走,访问此网格中的每个位置。每当移动到网格的边界之外时,需要继续在网格之外行走(但稍后可能会返回到网格边界)。
最终,我们到过网格的所有 rows x cols 个空间。
按照访问顺序返回表示网格位置的坐标列表。

提示:
1 <= rows, cols <= 100
0 <= rStart < rows
0 <= cStart < cols

int**spiralMatrixIII(introws,intcols,intrStart,intcStart,int*returnSize,int**returnColumnSizes){inttotal=rows*cols;// 分配结果空间int**ans=(int**)malloc(sizeof(int*)*total);*returnColumnSizes=(int*)malloc(sizeof(int)*total);*returnSize=total;for(intk=0;k<total;k++){ans[k]=(int*)malloc(sizeof(int)*2);(*returnColumnSizes)[k]=2;}intx=rStart;// 当前行坐标inty=cStart;// 当前列坐标intidx=0;// 结果数组写入下标// 先存入起点ans[idx][0]=x;ans[idx][1]=y;idx++;// r = 当前圈层每一条边需要走的步数,等价你代码的圈层半径rintr=1;while(idx<total){// ========== 第一段:向东 右走 r 步 (dy=+1) ==========for(intstep=0;step<r&&idx<total;step++){y=y+1;// 判断当前坐标在网格内才存入答案if(x>=0&&x<rows&&y>=0&&y<cols){ans[idx][0]=x;ans[idx][1]=y;idx++;}}// ========== 第二段:向南 下走 r 步 (dx=+1) ==========for(intstep=0;step<r&&idx<total;step++){x=x+1;if(x>=0&&x<rows&&y>=0&&y<cols){ans[idx][0]=x;ans[idx][1]=y;idx++;}}// 走完右、下两条边,圈层扩大,步数+1r++;// ========== 第三段:向西 左走 r 步 (dy=-1) ==========for(intstep=0;step<r&&idx<total;step++){y=y-1;if(x>=0&&x<rows&&y>=0&&y<cols){ans[idx][0]=x;ans[idx][1]=y;idx++;}}// ========== 第四段:向北 上走 r 步 (dx=-1) ==========for(intstep=0;step<r&&idx<total;step++){x=x-1;if(x>=0&&x<rows&&y>=0&&y<cols){ans[idx][0]=x;ans[idx][1]=y;idx++;}}// 走完左、上两条边,圈层再扩大,步数+1r++;}returnans;}
http://www.jsqmd.com/news/1230530/

相关文章:

  • 深入解析EDMA/QDMA通道机制:从事件触发到中断处理的嵌入式数据搬运实战
  • AM275x OTFA硬件安全模块配置实战:从寄存器解析到安全启动集成
  • 必须掌握的GEO排名稳定技巧
  • DevEco Code Plan+Build模式:审方案再执行,提升开发效率与质量
  • 小白程序员必看:从入门到精通大模型,开启AI全栈新篇章
  • React 17核心特性与渐进式升级指南
  • 2026年防火涂料知名十大品牌梳理 拓展伟业等企业核心优势盘点 - Fan_00
  • ChatGPT学术插件失效?DeepSeek-R1+Semantic Scholar联调失败?AI文献检索避坑手册(附可复现Prompt库)
  • libgit2 v1.9.6 发布:修复 Android 系统 segfault 等重要错误
  • 扬州改灯哪家专业?本田车主必看的专业改灯店推荐 - Ayu8888
  • 告别DLL报错:详解Visual C++运行库一键修复原理与脚本实现
  • UE性能优化全攻略:从CPU/GPU瓶颈分析到移动端专项优化
  • OpenSSL HollowByte 漏洞:11 字节载荷即可瘫痪全球服务器内存
  • Unity DOTS ECS万级实体性能优化实战:从传统OOP到数据导向架构迁移
  • 工装夹克、职业单西口袋工艺自动化改造深度解析
  • 小米MIMO Code开源AI编程助手评测与使用指南
  • NumPy核心原理与高效科学计算实战指南
  • Obsidian 不想花钱怎么同步?用Nutstore Sync同步插件最省心
  • 秘塔AI搜索响应延迟突增?资深架构师紧急发布4项性能优化配置(限24小时内生效)
  • 免费开源数据库工具 DBeaver 26.1.3 发布,AI 助手、数据编辑等多方面更新
  • 手办复刻的扫描技术难点:复杂曲面、微小细节、反光材质怎么破
  • 树链剖分
  • Hyperf框架实战:构建高性能PHP微服务应用
  • AI医疗应用场景全解析:小白也能轻松入门,收藏必备!
  • 类器官技术发展态势、产业格局与前沿展望研究
  • 鸿蒙 ArkTS 实战:Live Product Board 从直播商品看板到电商运营工具完整解析
  • AI芯片投资:技术挑战与商业陷阱解析
  • PS 加阴影的方法有几种?教你快速添加自然柔和阴影效果
  • tprPix性能分析与优化:使用现代C++特性提升游戏帧率
  • 大语言模型Agent架构:从Prompt到Context的工程实践