【刷题2—滑动窗口】最大连续1的个数lll、将x减到0的最小操作数

ops/2024/10/25 12:29:15/

目录

  • 一、最大连续1的个数lll
  • 二、将x减到0的最小操作数

一、最大连续1的个数lll

题目:
在这里插入图片描述
思路:
问题转换为:找到一个最长子数组,这个数组里面0的个数不能超过k个

定义一个变量count,来记录0的个数,进窗口、判断、出窗口、更新结果

代码:

class Solution {
public:int longestOnes(vector<int>& nums, int k) {int n = nums.size(), count = 0;int left = 0, right = 0, len = 0;while (right < n){if (nums[right] == 0) count++;right++;while (count > k){if (nums[left] == 0) count--;left++;}len = max(len, right - left);}return len;}
};

二、将x减到0的最小操作数

题目:
在这里插入图片描述
思路:
题目要求是移除最右边或者最左边,直接这样操作非常麻烦,可以反过来做。

最右边和最左边的和为x,用一个变量sum统计数组所有的元素之和,sum-x就是剩下区域的元素,这个区域是连续的,可以用滑动窗口。
在这里插入图片描述
要考虑target是负数的情况,如果是负数,直接返回-1,因为数组的每个元素都是整数。

要让操作数的次数最小,就要让等于target的子数组尽可能大,然后用滑动窗口的思路做,返回值为:如果子数组中没有和等于target就返回-1,否则返回数组长度减去len(n-len),得到最小操作数。

代码:

class Solution {
public:int minOperations(vector<int>& nums, int x) {int n = nums.size();int sum = 0;// 总和for (auto e : nums) sum += e;int target = sum - x;// 负数情况if (target < 0) return -1;int left = 0, right = 0, len = -1, k = 0;while (right < n){k += nums[right];while (k > target){k -= nums[left];left++;}if (k == target){len = max(len, right - left + 1);}++right;}return len == -1 ? -1 : n - len;}
};

http://www.ppmy.cn/ops/117915.html

相关文章

计算机视觉|机器学习中图片特征向量的提取方式:开启图像世界的钥匙

文章目录 什么是特征向量&#xff1f;常见的图片特征向量提取方法1. **手工设计的特征**SIFT&#xff08;尺度不变特征变换&#xff09;HOG&#xff08;方向梯度直方图&#xff09; 2. **卷积神经网络 (CNN)**3. **预训练模型**4. **自监督学习** 结语 今天我们将一起深入探讨机…

线程(三) 线程的互斥

文章目录 线程线程的同步和互斥线程同步线程互斥为什么要使用线程互斥什么是线程同步示例--线程操作共享资源引发问题 线程互斥--互斥锁示例--使用互斥锁来保证取款操作 互斥锁的属性示例--创建不同的属性的互斥锁后进行加锁操作 线程互斥--读写锁示例--对读写锁进行使用以观察…

前端框架对比选择:如何在众多技术中找到最适合你的

引言 在现代Web开发中&#xff0c;前端框架的选择对项目的成功与否至关重要。随着技术的不断发展&#xff0c;市面上涌现出多种前端框架&#xff0c;每种框架都有其独特的特点、优缺点以及适用场景。本文将对当前主流的前端框架进行详细对比&#xff0c;帮助开发者在选择时做出…

【C++】 vector 迭代器失效问题

【C】 vector 迭代器失效问题 一. 迭代器失效问题分析二. 对于vector可能会导致其迭代器失效的操作有&#xff1a;1. 会引起其底层空间改变的操作&#xff0c;都有可能是迭代器失效2. 指定位置元素的删除操作--erase3. Linux下&#xff0c;g编译器对迭代器失效的检测并不是非常…

搜维尔科技:使用Xsens动作捕捉系统和ai训练人形机器人模仿人类运动,执行复杂任务

人形机器人市场正在快速扩张:人形机器人市场将在未来大幅增长&#xff0c;据统计数据推算该市场将从2023年的13.2亿美元增长到2035年的约380亿美元&#xff0c;这显示出人形机器人市场强劲的增长趋势。 搜维尔科技&#xff1a;使用Xsens动作捕捉系统和ai训练人形机器人模仿人类…

Selenium自动化安装教程

‌Selenium自动化测试工具的安装教程主要包括以下几个步骤‌&#xff1a; ‌安装Python环境‌&#xff1a;Selenium需要Python环境来运行&#xff0c;因此首先需要安装Python。可以从Python官网下载适合自己操作系统的Python版本&#xff0c;并按照提示进行安装‌。 ‌安装Sele…

【60天备战2024年11月软考高级系统架构设计师——第29天:微服务架构——微服务的优缺点】

微服务架构通过将大型单体应用拆分为多个独立的小型服务&#xff0c;使系统具备灵活性、可扩展性和独立部署的优势。但与此相伴的是复杂的运维和开发管理挑战。因此&#xff0c;在选择微服务架构时&#xff0c;架构师需仔细权衡其优势与劣势。 微服务架构的优点 独立部署&…

当Navicat报错 Can not connect to MySQL server的解决方法!

今天运行数据库时突然弹出一个error&#xff1a; 原因&#xff1a;MySQL的服务没有打开&#xff0c;需要检查MySQL的开启状态即可。 具体做法&#xff1a; 1.右键“开始”&#xff0c;点击“计算机管理” 2. 选择“服务和应用程序”&#xff0c;并点击“服务” 3.在服务中找…