Leetcode3634.排序+双指针法

Problem: 3634. 使数组平衡的最少移除数目

思路

排序+双指针法

解题过程

left指向元素x,right右移,注意边界条件

复杂度

  • 时间复杂度: O(nlogN)
  • 空间复杂度: O(logN)

代码

cpp 复制代码
class Solution {
public:
    int minRemoval(vector<int>& nums, int k) {
        int n=nums.size();
        sort(nums.begin(),nums.end());//对数组nums排序
        int ans=n,right=0;//定义并初始化最小移除数目ans和右指针right
        for(int left=0;left<n;++left){//左指针left遍历整个数组
            while(right<n&&nums[right]<=static_cast<long long>(nums[left])*k){
                ++right;
            }//而右指针right不断向右移动,直到指向第一个严格大于nums[left]的元素,或者超出数组边界为止。
            ans=min(ans,n-(right-left));//更新ans的值
        }
        return ans;
    }
};
相关推荐
墨尘笔尖12 分钟前
最大最小值降采样算法的优化
c++·算法
YIN_尹2 小时前
【Linux系统编程】进程地址空间
linux·c++
EverestVIP2 小时前
C++中空类通常大小为1的原理
c++
white-persist2 小时前
【vulhub shiro 漏洞复现】vulhub shiro CVE-2016-4437 Shiro反序列化漏洞复现详细分析解释
运维·服务器·网络·python·算法·安全·web安全
网域小星球3 小时前
C++ 从 0 入门(六)|C++ 面试必知:运算符重载、异常处理、动态内存进阶(终极补充)
开发语言·c++·面试
晚会者荣3 小时前
红黑树的插入(有图)
c++
FL16238631293 小时前
基于C#winform部署软前景分割DAViD算法的onnx模型实现前景分割
开发语言·算法·c#
John.Lewis3 小时前
C++进阶(12)附加学习:STL之空间配置器(了解)
开发语言·c++·笔记
汉克老师3 小时前
GESP2023年12月认证C++三级( 第三部分编程题(2、单位转换))
c++·string·单位转换·gesp三级·gesp3级
baizhigangqw3 小时前
启发式算法WebApp实验室:从搜索策略到群体智能的能力进阶
算法·启发式算法·web app