LeetCode-3192 使二进制数组全部等于1的最少操作次数Ⅱ

server/2024/10/21 0:28:48/

今天的每日一题就是昨天的延伸,预判成功。

LeetCode-3191 使二进制数组全部等于1的最少操作次数-CSDN博客文章浏览阅读115次。如果数组第一个元素就是0,那么第一个元素是肯定要翻转的,而我们只有从索引0的位置开始翻转才可以翻转到第一个元素,其他位置都不行,所以这个翻转是逃不掉的。因为它已经是1了,而只有从索引0的位置开始翻转才能改变到它,为了保持它始终为1,我们应该不再从索引0的位置翻转,既然如此,我们自然是可以把它排除在外。如果按照上一题的做法做的话是会超时的,因为翻转而循环的次数太多了,如果是剩余的元素都要翻转,实际上我们可以不去真的翻转。主要原因是这十天的题要么简单到爆,要么难到爆,再要么就是最近学校安排实训,时间比较紧。https://blog.csdn.net/m0_63235356/article/details/143033045?spm=1001.2014.3001.5501

解法其实差不多,但是如果我们真的按照昨天的方法一个个去模拟翻转是会超时的。因为昨天是翻转三个,而今天是翻转右边所有。

思路是一样的,我们要翻转数组左侧第一个元素的话只能从索引为0的位置开始翻转,所以还是要从左往右开始遇0翻转。

问题在于我们不能像昨天一样真的把后面的元素一个个翻转。

因为我们是从左侧开始遍历,所以如果我遇到0了,那么后续所有元素都需要翻转,因此我们只需要额外拿一个变量来记录翻转次数即可。

因为翻两次等于没返,所以如果累计翻转次数为奇数并且当前元素的值为0或者是累计翻转次数为偶数并且当前元素的值为1,这两种情况下不需要翻转,反之需要翻转,把记录次数的变量++即可。

不难理解,可以参考着下面的代码自己动手敲一敲,跟昨天的每日一题思路是一致的。

class Solution {
public:int minOperations(vector<int>& nums) {int n = nums.size();int res = 0, temp = 0;  // temp 记录翻转次数for(int i = 0; i < n; ++i){if((temp%2 == 0 && nums[i] == 0) || (temp%2 == 1 && nums[i] == 1)){res++,temp++;}}return res;}
};


http://www.ppmy.cn/server/133493.html

相关文章

【Windows】【DevOps】Windows Server 2022 采用WinSW将一个控制台应用程序作为服务启动(方便)

下载WinSW 项目地址&#xff1a; GitHub - winsw/winsw: A wrapper executable that can run any executable as a Windows service, in a permissive license. 下载地址&#xff1a; https://github.com/winsw/winsw/releases/download/v2.12.0/WinSW-x64.exe 参考配置模…

fluent-ffmpeg操作MP3文件深入解析

软考鸭微信小程序 学软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 引言 fluent-ffmpeg是一个功能强大的Node.js库&#xff0c;它为FFmpeg提供了一个流畅的接口。FFmpeg是一个著名的多媒体框架&#xff0c;以处理音频、视频和…

Oracle中解决select into值集为空的报错情况

先看为空的情况 procedure test is n number; begin select 1 into n from CUX_2_OM_RELEASE_LIMIT_V cov where cov.Customer_Idnull; end; CUX_2_OM_RELEASE_LIMIT_V中没有id是空的&#xff0c;因此返回的结果一定是空集 运行结果: 有时候我…

立志最细,FreeRtos的中断管理(Interrupt Management)函数,详解!!!

前言&#xff1a;本文参考&#xff0c;韦东山老师开发文档&#xff0c;连接放在最后。 为什么需要中断管理函数&#xff1f; 在FreeRtos操作系统中&#xff0c;需要实时响应性&#xff0c;也就是随时随地必须保证正常多任务的运行&#xff0c;如果有中断发生&#xff0c;因为中…

K8s-pod详解2

Pod生命周期 我们一般将pod对象从创建至终的这段时间范围称为pod的生命周期&#xff0c;它主要包含下面的过程&#xff1a; pod创建过程运行初始化容器&#xff08;init container&#xff09;过程运行主容器&#xff08;main container&#xff09; 容器启动后钩子&#xff0…

专题:数组(已完结)

1.二分查找 有两种写法 第一种&#xff1a;左闭右闭 第二种&#xff1a;左闭右开 两种方法注意初始化 right的不同 以及更新right的不同 第一种&#xff1a; class Solution { public:int search(vector<int>& nums, int target) {int left 0;int right nums.siz…

PDF 软件如何帮助您编辑、转换和保护文件

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案&#xff0c;还是尝试组织和编辑主文档&#xff0c;PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时&#xff0c;请考虑这些因素。 1. 确定您的…

Spring Boot:中小型医院网站开发新选择

3 系统分析 3.1 可行性分析 通过对本基于Spring Boot的中小型医院网站实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、操作可行性、经济可行性和时间可行性四方面进行分析。 3.1.1 技术可行性 本基于Spring Boot的中小型…