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

leetcode 2576.求出最多标记下标

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 个数进行匹配。


http://www.kler.cn/news/305778.html

相关文章:

  • C# 开发教程-中级教程
  • IEEE 754浮点数表示
  • 18062 二维数组每行中的最大值
  • k8s环境配置
  • 【Unity】简易而又实用的抽卡算法
  • 机器学习特征构建与特征筛选
  • NC字典树的实现
  • 深入理解 Redis 的文件事件处理器
  • 暗界正方形之谜
  • 【YashanDB知识库】单机升级典型问题及应急措施
  • Spring3-IoC1-IoC容器、基于xml管理bean
  • 【SSRF漏洞】——http协议常见绕过
  • 【React】React18.2.0核心源码解读
  • 乌俄冲突下AI和计算机的使用
  • Spring Boot:现代化Java应用开发的艺术
  • 远程访问电脑共享文件
  • 【Arduino】BNO085 姿态的 3D模型 展示方法(映射到 Unity)
  • Mybatis通用接口-基于Provider
  • 一维稳态与非稳态导热的详细分析
  • 力扣100题——栈和堆
  • 设计模式 装饰模式(Decorator Pattern)
  • 讨论人机交互研究中大语言模型的整合与伦理问题
  • Mysql----索引与事务
  • NLP基础及其代码-BERT系列
  • Ubuntu 24.04 配置 nginx + php-fpm
  • 异常冲突行为和危险识别系统源码分享
  • Rust使用dotenvy读取环境变量
  • 网络通信流程
  • 树和二叉树基本术语、性质
  • 劳特巴赫ICD调试器CMM调用烧录框架固件研究之C语言版本