当前位置: 首页> 健康> 养生 > leetcode 2576.求出最多标记下标

leetcode 2576.求出最多标记下标

时间:2025/8/4 10:17:48来源:https://blog.csdn.net/m0_53899788/article/details/142184775 浏览次数:0次

2576.求出最多标记下标

题意:

在这里插入图片描述

解析:

数组长为 n n n,因为一次标记两个,所以数组中最多有 ⌊ n 2 ⌋ \lfloor \frac{n}{2}\rfloor 2n 对标记。

贪心的考虑,一个数 x 一定优先与满足 y ≥ 2 x y \ge 2x y2x 中最小的 y 进行匹配。

所以将数组排序,然后根据长度分成两部分,左侧较小的元素优先与右侧较小的元素进行匹配。用双指针扫描两部分数组,如果 n u m s [ j ] < 2 n u m [ i ] nums[j] < 2num[i] nums[j]<2num[i],则不断将 j j j 指针后移。

代码:

int maxNumOfMarkedIndices(vector<int>& nums) {int n = nums.size();sort(nums.begin(), nums.end());int pos = n/2;int ans = 0;for(int i = 0, j = pos; i < pos && j < n; i++, j++){while(j < n && nums[i]*2 > nums[j])j++;if(j < n)ans += 2;}return ans;}

二分答案:

另一种思路是二分答案。二分匹配的对数 k,如果能有 k 对匹配,则一定是最小的 k 个数与最大的 k 个数进行匹配。

关键字:leetcode 2576.求出最多标记下标

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: