每日一题(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 分钟前
乐迪信息:智能识别船舶种类的AI解决方案
大数据·网络·人工智能·算法·无人机
朔北之忘 Clancy12 分钟前
第一章 顺序结构程序设计(1)
c++·算法·青少年编程·竞赛·教材·考级·讲义
老鼠只爱大米17 分钟前
LeetCode经典算法面试题 #41:缺失的第一个正数(位置交换法、标记法等多种方法详解)
算法·leetcode·原地哈希·缺失的第一个正数·算法面试·位图法·集合哈希法
hetao173383726 分钟前
2026-01-14~15 hetao1733837 的刷题笔记
c++·笔记·算法
好奇龙猫27 分钟前
【大学院-筆記試験練習:线性代数和数据结构(10)】
数据结构·线性代数
百度搜不到…27 分钟前
背包问题递推公式中的dp[j-nums[j]]到底怎么理解
算法·leetcode·动态规划·背包问题
一起养小猫1 小时前
LeetCode100天Day13-移除元素与多数元素
java·算法·leetcode
ACERT3331 小时前
10.吴恩达机器学习——无监督学习01聚类与异常检测算法
python·算法·机器学习
诗词在线1 小时前
从算法重构到场景复用:古诗词数字化的技术破局与落地实践
python·算法·重构
不穿格子的程序员1 小时前
从零开始写算法——二叉树篇7:从前序与中序遍历序列构造二叉树 + 二叉树的最近公共祖先
数据结构·算法