每日一题(leetcode2009):使数组连续的最小操作数--滑动窗口

从相反面考虑,一条已知长度的线段最多能覆盖多少数值,最先用长度减一下就行。线段覆盖问题用滑动窗口就行。代码如下:

cpp 复制代码
class Solution {
public:
    int minOperations(vector<int>& nums) {
        int len=nums.size();
        sort(nums.begin(),nums.end());
        int m=unique(nums.begin(),nums.end()) -nums.begin();
        int left=0;
        int ans=0;
        for(int i=0;i<m;i++)
        {
            while(nums[left]<nums[i]-len+1){
                left++;
            }
            ans=max(i-left+1,ans);
        }
        return len-ans;
    }
};

其中 int m=unique(nums.begin(),nums.end()) -nums.begin();为原地去重代码。unique(nums.begin(),nums.end())返回的是排序好的数的后面一个数,所以减去开头就是去重序列的长度。

相关推荐
Shea的笔记本40 分钟前
MindSpore实战笔记:Pix2Pix图像转换复现全记录
笔记·算法·机器学习·web3
清酒难咽43 分钟前
算法案例之蛮力法
c++·经验分享·算法
想逃离铁厂的老铁1 小时前
Day50 >> 98、可达路径 + 广度优先搜索理论基础
算法·深度优先·图论
散峰而望1 小时前
【数据结构】假如数据排排坐:顺序表的秩序世界
java·c语言·开发语言·数据结构·c++·算法·github
YMH.1 小时前
1.23 指针
数据结构
海棠AI实验室1 小时前
第十五章 字典与哈希:高效索引与去重
算法·哈希算法
独自破碎E1 小时前
动态规划-打家劫舍I-II
算法·动态规划
圣保罗的大教堂1 小时前
leetcode 3507. 移除最小数对使数组有序 I
leetcode
尽兴-1 小时前
JVM垃圾收集器与三色标记算法详解
java·jvm·算法·cms·gc·g1·三色标记算法
沐欣工作室_lvyiyi1 小时前
IIR数字带通滤波器(论文+源码)
算法·matlab·毕业设计·数字滤波器