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

相关推荐
shangjian007几秒前
AI大模型-机器学习-算法-线性回归-优化方法
人工智能·算法·机器学习
shangjian0074 分钟前
AI大模型-机器学习-算法-逻辑回归
人工智能·算法·机器学习
王锋(oxwangfeng)5 分钟前
车道线拟合算法--自动驾驶
人工智能·算法·自动驾驶
computersciencer6 分钟前
一文快速理解线性回归的过程
算法·机器学习·回归·线性回归
VT.馒头11 分钟前
【力扣】2627. 函数防抖
前端·javascript·算法·leetcode
想逃离铁厂的老铁11 分钟前
Day41 >> 121、买卖股票的最佳时机 + 122.买卖股票的最佳时机II + 123.买卖股票的最佳时机III
算法·leetcode
夏鹏今天学习了吗12 分钟前
【LeetCode热题100(79/100)】打家劫舍
算法·leetcode·职场和发展
iAkuya13 分钟前
(leetcode)力扣100 41二叉树的层序遍历(bfs)
windows·leetcode·宽度优先
老鼠只爱大米20 分钟前
LeetCode算法题详解 53:最大子数组和
leetcode·动态规划·分治法·最大子数组和·kadane算法·maxsubarray
jimy121 分钟前
消息队列Message Queue(MQ),队列链表(queue),消费者,生产者
数据结构·链表