每日一题(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())返回的是排序好的数的后面一个数,所以减去开头就是去重序列的长度。

相关推荐
高山上有一只小老虎2 分钟前
等差数列前n项的和
java·算法
Espresso Macchiato8 分钟前
Leetcode 3741. Minimum Distance Between Three Equal Elements II
滑动窗口·leetcode medium·leetcode 3741·leetcode周赛475
sin_hielo10 分钟前
leetcode 2536
数据结构·算法·leetcode
flashlight_hi16 分钟前
LeetCode 分类刷题:203. 移除链表元素
算法·leetcode·链表
py有趣16 分钟前
LeetCode算法学习之数组中的第K个最大元素
学习·算法·leetcode
吗~喽16 分钟前
【LeetCode】将 x 减到 0 的最小操作数
算法·leetcode
what_201844 分钟前
list集合使用
数据结构·算法·list
hetao17338371 小时前
2025-11-13~14 hetao1733837的刷题记录
c++·算法
hansang_IR1 小时前
【题解】洛谷 P2476 [SCOI2008] 着色方案 [记搜]
c++·算法·记忆化搜索
趙卋傑1 小时前
常见排序算法
java·算法·排序算法