news 2026/4/18 11:25:30

D.二分查找-二分答案-求最大——2576. 求出最多标记下标

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
D.二分查找-二分答案-求最大——2576. 求出最多标记下标

题目链接:2576. 求出最多标记下标(中等)

算法原理:

解法一:排序+双指针+贪心

33ms击败79.27%

时间复杂度O(Nlogn)

首先我们思考一件事情:当一个大的数遇到一堆小的数时,在同样满足2×小的数≤大的数的情况下,咱们选这些小的数中偏小的还是偏大的?那肯定选偏大的啊!因为偏小的可能还能与后续大的数再凑一对,这贪心的思想就来了

①我们要找大的数和小的数就要先排序

②从中间劈开,分别找满足题述条件的2*nums[i] <= nums[j]的数

如果当前的大数能跟前面小的数匹配上,ret+=2,left和right同时往后走

如果匹配不上,说明当前大数小了,要right往后走再继续匹配

解法二:二分查找

35ms击败43.90%

时间复杂度O(Nlogn)

①目标变量:对数

②目标条件:对数最多

③转换逻辑:在mid对的情况下能否满足2 * nums[i] <= nums[j]的条件

具体步骤:

①确定边界:

left:0,最少0对

right:n/2,n为数组长度,最多时,所有数都能组成一对

②确定二分模型:

由于要找最大对数,因此采用最右端点模型,如果没有mid对,说明mid太大了,属于最右端点的右边,需要返回true,缩小mid,向左调整

③check方法设计:判断方法跟解法一类似,都是贪心的思想,但不完全相同,如果数组长度为10,我们在找3对时,只需判断3个最大元素和3个最小元素能否配对即可,如果这都没有3对,那就更不可能再凑3对了

Java代码:

class Solution { //解法一:排序+双指针+贪心 public int maxNumOfMarkedIndices(int[] nums) { Arrays.sort(nums); int n=nums.length; int left=0,right=(n+1)/2; int ret=0; while(left<n/2&&right<n){ if(2*nums[left]<=nums[right]){ ret+=2; left++;right++; }else right++; } return ret; } }
class Solution { //解法二:二分查找 public int maxNumOfMarkedIndices(int[] nums) { Arrays.sort(nums); int n=nums.length; int left=0,right=n/2; int ret=0; while(left<right){ int mid=left+(right-left+1)/2; if(check(mid,nums)) right=mid-1; else left=mid; } return left*2; } //如果不能找到mid对则说明mid太大了,返回true,需要向左调整 private boolean check(int mid,int[] nums){ //0对一定可行,无需向更小调整 if(mid==0) return false; int n=nums.length; //贪心验证:前mid个最小元素配对最后mid个最大元素 for(int i=0;i<mid;i++) //有一个不满足,mid对就达不到 if(2*nums[i]>nums[n-mid+i]) return true; return false; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 23:30:56

ChatTTS 入门指南:如何优化配置要求以提升性能

ChatTTS 入门指南&#xff1a;如何优化配置要求以提升性能 摘要&#xff1a;本文针对 ChatTTS 新手开发者面临的配置要求高、性能优化难的问题&#xff0c;提供了一套完整的解决方案。从硬件选型到软件配置&#xff0c;详细解析如何根据实际需求调整参数&#xff0c;降低资源消…

作者头像 李华
网站建设 2026/4/18 8:35:48

企业微信智能客服的AI辅助开发实战:从架构设计到性能优化

背景痛点&#xff1a;企业微信客服的三座大山 做To B客服的同学都懂&#xff0c;企业微信一旦把二维码贴出去&#xff0c;消息就像春运抢票一样涌进来。我们第一次上线时&#xff0c;30分钟里收到1.2万条&#xff0c;人工坐席只有8个人&#xff0c;瞬间被淹没。总结下来&#…

作者头像 李华
网站建设 2026/4/18 11:18:27

【仅限头部云厂商内部流出】Docker监控效能评估白皮书(含17项SLI/SLO定义标准+4类典型误报归因模型)

第一章&#xff1a;Docker 监控优化 Docker 容器的轻量级与高密度部署特性&#xff0c;使得传统主机级监控手段难以精准反映容器真实资源消耗与运行状态。有效的监控优化需覆盖指标采集、传输效率、存储压缩及可视化响应四个关键维度。 启用内置健康检查与实时指标暴露 在 Doc…

作者头像 李华
网站建设 2026/4/16 20:44:27

Linux系统下gmp6.2.1编译安装与深度学习环境配置实战指南

1. 为什么需要手动编译GMP库 在Linux系统下搭建深度学习环境时&#xff0c;我们经常会遇到各种依赖库的安装问题。GMP&#xff08;GNU Multiple Precision Arithmetic Library&#xff09;作为高性能的多精度数学运算库&#xff0c;是许多科学计算和深度学习框架的基础依赖。虽…

作者头像 李华