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

记力扣LCP28.采购方案 练习理解

小力将 N 个零件的报价存于数组nums。小力预算为target,假定小力仅购买两个零件,要求购买零件的花费不超过预算,请问他有多少种采购方案。

注意:答案需要以1e9 + 7 (1000000007)为底取模,如:计算初始结果为:1000000008,请返回1

思路:
因为只需要买两个零件考虑到只需要计算两个数值的和是否在预算以内即可,故而采用双指针的办法,依次判断之和是否满足条件即可。最后结果对1000000007取余即可(因为可能零件和预算变大之后方法也会变多)。主要难理解的可能是其中判断依据排序后为什么是right-left是一个数学问题,他如果最小的和最大的和满足题意,等价于一个搭配问题,两个两个取能取几次,是个排列问题,他的次数为最右边的序数减去最左边的序数就是次数。

class Solution: def purchasePlans(self,nums:List[int],target:int)->int: left,right=0,len(nums)-1 count=0 nums.sort() while left<right: if nums[left]+nums[right]<=target: count+=right-left left+=1 else: right-=1 return count%1000000007

难点分析:

  1. 排序保证了 “单调性”:左指针固定时,右指针往左的所有数都更小,因此和左指针的和也更小;
  2. 双指针的 “贪心”:找到最大的合法右指针,就能覆盖所有更小的右指针的合法情况;
  3. 计数的 “数学本质”:left+1right的元素个数 = 终止索引 - 起始索引 =right - left(起始索引是 left+1,终止索引是 right → 个数 = right - (left+1) + 1 = right - left)。
http://www.cnnetsun.cn/news/143665.html

相关文章:

  • Kubernetes可视化管理新体验:告别命令行,拥抱kubeasz Dashboard
  • 实战指南:构建基于Google API的自动化SEO监控系统
  • Recon-ng数据导出终极指南:5分钟掌握情报呈现技巧
  • PostHog容器化部署终极方案:从业务价值到技术实现的高效配置指南
  • Rust Web开发完整教程:realworld-axum-sqlx实战指南
  • Tuya-Local终极指南:如何快速配置本地涂鸦设备实现全屋智能控制
  • 基于SpringBoot的高校科研工作管理系统(源码+lw+部署文档+讲解等)
  • 基于springboot + vue电影院购票管理系统
  • Hasklig字体:为什么它能让你的代码阅读体验提升300%?
  • Neovim LSP配置终极指南:快速搭建现代化开发环境
  • IT-Tools终极指南:Vue 3 + TypeScript打造开发者效率神器
  • Weylus 终极指南:3步将平板变身手绘板
  • WeasyPrint终极指南:从HTML到PDF的完整解决方案
  • 基于java + vue校园外卖系统(源码+数据库+文档)
  • Flutter炫酷UI设计模板教程:打造专业级移动应用界面
  • 计算机毕业设计|基于springboot + vue作业管理系统(源码+数据库+文档)
  • 终极MCP测试指南:7天掌握协议全功能验证
  • 为什么Vkvg是下一代2D图形渲染的颠覆者?
  • 基于VUE的客房订房系统[VUE]-计算机毕业设计源码+LW文档
  • DiffSynth-Engine终极指南:构建高性能扩散模型推理管道的完整方案
  • 5层防护构建容器运行时安全屏障:从内核隔离到应用沙箱的深度防御实践
  • 定义宇宙比你想象的更难
  • 物流信息管理|基于java + vue物流信息管理系统(源码+数据库+文档)
  • 体育器材管理|基于java+ vue体育器材管理系统(源码+数据库+文档)
  • 新一代物联网平台
  • 学生档案管理|基于springboot 学生档案管理系统(源码+数据库+文档)
  • 勤工助学管理|基于ssm 勤工助学管理系统(源码+数据库+文档)
  • 把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地
  • 【Matlab】五次B样条曲线应用于工业机器人轨迹规划
  • 杰理之关于音质问题提高的方式【篇】