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

D.二分查找-二分答案-求最大——1802. 有界数组中指定下标处的最大值

题目链接:1802. 有界数组中指定下标处的最大值(中等)

算法原理:

解法:二分查找

1ms击败91.18%

时间复杂度O (log (maxSum))

①目标变量:nums[index]的取值

②目标条件:nums[index]取值最大,且满足数组两边最小递减至1的和≤maxSum

③转换逻辑:取值为nums[mid]时,是否满足数组两边最小递减至1的和≤maxSum

具体步骤:

①确定边界:

left:1,因为题目要求nums[i]是正整数,因此最小值是1

right:maxSum

②确定二分模型:nums[mid]↑ 条件符合率↓ 呈负相关单调,由于是找到最大的nums[mid],因此采用最右端点模型

③check方法设计:

记L和R为index左侧和右侧元素个数和,则有下图关系:

因此我们在计算数组总和时分三个部分来算:总和=左+mid+右

以计算左侧和为例(右侧与之相同):

1.可连续递减时:用等差数列求和

项数n=L,首项(挨着mid的)a1=mid-1,末项an=mid-L,因此

2.不可连续递减时(减至1后,后续都是1):

递减部分:从1加到n的和有个经典公式,代入n=mid-1后得到

后续非递减部分:从1到mid-1共有mid-1个数,因此剩下L-(mid-1)个数,这些都是1

所以最终式子为

Java代码:

class Solution { public int maxValue(int n, int index, int maxSum) { int left=1,right=maxSum; while(left<right){ int mid=left+(right-left+1)/2; if(!check(n,mid,maxSum,index)) right=mid-1; else left=mid; } return left; } //判断nums[index]=mid时是否符合条件 private boolean check(int n,int mid,int maxSum,int index){ //先算上中间元素 long sum=mid; int L=index;//左边元素个数 int R=n-1-index;//右边元素个数 //计算左边和:不可连续递减就递减到1后保持1 if(mid-1>=L) sum+=(long)L*(2*mid-1-L)/2; else sum+=(long)(mid-1)*mid/2+(L-(mid-1)); //计算右边和:逻辑与左边一致 if(mid-1>=R) sum+=(long)R*(2*mid-1-R)/2; else sum+=(long)(mid-1)*mid/2+(R-(mid-1)); return sum<=maxSum; } }
http://www.jsqmd.com/news/371490/

相关文章:

  • 别再用ChatGPT群发祝福了!30分钟微调一个懂你关系的“人情味”拜年AI
  • python defaultdict
  • A.每日一题——1382. 将二叉搜索树变平衡
  • 一人食调味痛点破解:小容量健康调味品,告别凑活吃出精致感 - 谈谈-新视野
  • 计算机毕业设计springboot医疗纠纷处理系统 医患矛盾调解信息化平台的设计与实现 医疗事故争议在线处置系统的设计与开发
  • B3872 [GESP202309 五级] 巧夺大奖
  • 信息论与编码篇---微分熵
  • 2深度学习基础知识
  • 独居餐如何有仪式感?天然提鲜调味品,让一人食告别凑活 - 谈谈-新视野
  • 信息论与编码篇---微分熵的极值性
  • 一人食不将就:轻盐调味让独居餐吃出健康与仪式感 - 谈谈-新视野
  • 自定义控件 - 流式布局:TagFlowLayout
  • 信息论与编码篇---连续随机变量的微分熵
  • 六个月慢酿的轻盐调味品,适配一人食的健康选择 - 谈谈-新视野
  • 一人食调味不将就:轻盐慢酿方案,让独居餐有仪式感还不浪费 - 谈谈-新视野
  • 破局基层沟通壁垒 赋能凉山脱贫攻坚——智能会议系统筑牢政务协同“数字桥梁”
  • Spring Boot 中采用 @Transactional 注解设置事务管理
  • 关于春节期间创作者身份认证审核延迟的通知
  • C/C++ 从 Excel (.xls)文件中提取图像 - capp
  • Flink从入门到上天系列第三篇:Flink集群化部署
  • B3929 [GESP202312 五级] 小杨的幸运数
  • Kafka从入门到上天系列第八篇:如果直接在zookeeper当中把controller节点直接删除掉。会发生什么?
  • AppML 案例模型:深度解析与应用前景
  • C# 类型转换详解:隐式、显式转换及常用方法
  • Node.js 安装配置指南
  • 智能教育Agentic AI的伦理框架:提示工程架构师的设计原则与实践
  • 按键消抖方法
  • MySQL 安装配置
  • 手把手教你学Simulink--基于高比例可再生能源渗透的复杂电网建模场景实例:多馈入直流系统中光伏电站与风电场协同运行仿真
  • 从模型到产品:Claude AI原生应用商业化路径