Leetcode3191. 使二进制数组全部等于 1 的最少操作次数 I

微信小程序 - 最新将页面可分享到朋友圈功能,小程序实现分享到朋友圈功能,开启分享给好友及分享朋友圈功能(微信小程序怎么分享到朋友圈?详细流程及示例代码教程) 没有设置过分享朋友圈功能的小程序,分享朋友圈按钮是灰色且无法点击。小程序 vue2 | vue3 版本语法都能使用,跟着教程复制代码运行即可。如下图所示,将页面开启分享后便可由用户转发出去。 阅读详情

Every day a Leetcode

题目来源:3191. 使二进制数组全部等于 1 的最少操作次数 I

解法1:遍历

分类讨论:

  • 如果 nums[i]=1,无需修改,问题变成剩下 n−i-1 个数如何操作。接下来考虑 nums[i+1]。
  • 如果 nums[i]=0,修改,问题变成剩下 n−i-1 个数如何操作。接下来考虑 nums[i+1]。

所以从左到右遍历数组,一边遍历一边修改。

代码:

/*
 * @lc app=leetcode.cn id=3191 lang=cpp
 *
 * [3191] 使二进制数组全部等于 1 的最少操作次数 I
 */

// @lc code=start
class Solution
{
public:
    int minOperations(vector<int> &nums)
    {
        int n = nums.size();
        int ans = 0;
        for (int i = 0; i < n - 2; i++)
        {
            if (nums[i] == 0)
            {
                nums[i + 1] = (nums[i + 1] ? 0 : 1);
                nums[i + 2] = (nums[i + 2] ? 0 : 1);
                ans++;
            }
        }
        if (nums[n - 2] == 0 || nums[n - 1] == 0)
            return -1;
        return ans;
    }
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n),其中 n 是数组 nums 的长度。

空间复杂度:O(1)。

vue2/3 - 详细实现内网使用离线高德地图功能,在vue中无需网络离线使用高德地图相关功能,高德地图如何离线加载详细教程(内网部署及使用),提供最新完整的瓦片资源下载及相关工具(示例代码,一键复制 vue,vue2,vue3,高德地图,离线使用高德地图,高德地图瓦片官方下载,vue内网使用高德地图离线无网络,断网情况下使用高德地图,vue离线高德地图教程,如何实现内网部署高德地图,无需联网离线使用,vue+ts实现离线高德地图 内网离线高德地图,如何在高德地图Vue项目中下载离线地图,高德离线地图加载不出来,高德地图离线使用不显示怎么办,怎么解决vue内网使用离线高德地图加载失败问题,vue实现离线地图+高德瓦片,vue引入高德离线地图,vue项目如何使用离线高德地图和自定义地图样式,高德离线地图的下 阅读详情

相关推荐

利用WI生成无线信道数据

选取DeepMIMO的一个射线追踪场景O1(Outdoor 1)Scenario,工作频率为3.5GHz。有两条街和一个十字路口的户外场景18个基站和超过一百万个用户18个基站(BSs):BS1-BS18.每个基站的高度是8米每个基站的天线阵列是isotropic天线三个统一的x-y用户网格用户的总计数量为:1184923每个用户网格中的第一个用户总是(x,y)坐标最低的用户 所有用户的高度是2m每个用户的每个天线阵列是isotropic天线定义射频追踪场景。

bingbingaidaima的博客 5599

leetcode3191

https://leetcode.cn/problems/minimum-operations-to-make-binary-array-elements-equal-to-one-i/description/贪心策略证明:

weixin_40210109的博客 256

Transformer模型在语义通信中的实战应用:从信源编码到端到端优化

本文深入探讨了Transformer模型在语义通信中的实战应用,从信源编码到端到端优化。文章分析了Transformer凭借其强大的全局依赖建模能力,如何成为实现高效语义提取与传输的理想架构,并提供了构建可端到端训练系统的具体实现思路与评估方法,旨在为下一代智能通信系统提供技术参考。

o9p0q1的博客 689

Leetcode 1151:最少交换次数来组合所有的 1(超详细的解法!!!)

给出一个二进制数组 data,你需要通过交换位置,将数组中 任何位置 上的 1 组合到一起,并返回所有可能中所需 最少的交换次数。 示例 1: 输入:[1,0,1,0,1] 输出:1 解释: 有三种可能的方法可以把所有的 1 组合在一起: [1,1,1,0,0],交换 1 次; [0,1,1,1,0],交换 2 次; [0,0,1,1,1],交换 1 次。 所以最少的交换次数为 1。 示例 2...

coordinate的博客 8225

14.4kW大功率母线变换器设计:LLC+矩阵变压器+GaN实战解析

在数据中心供电架构中,隔离母线变换器将高压直流母线转换为48V低压母线,是大功率供电链路的核心环节。随着功率密度与效率要求不断攀升,传统移相全桥与普通LLC方案已难以满足300A级输出需求。基于LLC/CLLC谐振拓扑,结合矩阵变压器与GaN功率器件,成为新一代高性能母线变换器的主流技术路线。矩阵变压器将大功率磁性元件拆分为多个小单元,配合原边串联副边并联结构,有效降低绕组损耗并提升功率密度;GaN器件则通过高频软开关进一步压减开关损耗。本文以一台14.4kW样机为例,完整梳理从拓扑选型、谐振参数计算、同步

weixin_28273593的博客 341

SAP 与 Palantir 合作全景解析:这不是普通集成,而是把 ERP、数据语义层、云迁移与企业级 AI 串成一条价值链

SAP与Palantir的战略合作聚焦企业数字化转型核心痛点,通过深度技术整合构建"数据-决策-执行"闭环。合作包含四大主线:云迁移连续性保障、SAP业务数据云与Palantir平台对接、联合工程开发、高监管行业优先落地。技术实现上采用SAP认证插件,支持双向数据交互和实时业务动作触发。该合作突破了传统ERP系统局限,将业务语义与AI执行相结合,特别适合制造业供应链优化、财务争议处理等高价值场景,为企业在云迁移过程中实现业务连续性与智能化升级提供新范式。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 192

【从零开始的LeetCode-算法】3191. 使二进制数组全部等于 1 的最少操作次数 I

一个元素指的是将它的值从 0 变 1 ,或者从 1 变 0。如果无法全部变成 1 ,返回 -1。无法将所有元素都变为 1。你可以对数组执行以下操作。中所有元素变为 1 的。

九圣残炎的编程博客 440

大数据预测分析:精准把握市场趋势

传统市场预测多依赖经验判断(比如“去年卖了1000件,今年加20%”)或小数据统计(比如用近6个月的销量做线性回归)。而大数据预测分析是:利用海量结构化+非结构化数据(销售、用户、社交媒体、天气等),通过机器学习/深度学习模型,挖掘数据中的关联关系与趋势规律,实现对未来市场走势的精准预测。更全面:覆盖内部(企业数据)+外部(行业、环境数据)的全维度数据;更精准:用算法替代人工,避免主观偏差;更实时:支持分钟级/小时级的实时预测(比如直播带货的销量预测)。错误做法。

AI智能探索者的博客 1024

LeetCode 100344. 使二进制数组全部等于 1 的最少操作次数 I

更多题解尽在每日更新。组队打卡,更多解法等你一起来参与哦!,难度。

m0_64381458的博客 440

简谈基于FPGA的千兆以太网设计

简谈基于FPGA的千兆以太网设计 今天给大侠带来简谈基于FPGA的千兆以太网设计,话不多说,上货。 今天我们来简单的聊一聊以太网,以太网在FPGA学习中属于比较高级的内容了,有些大侠肯定会感觉以太网学习起来非常不容易。其实,我可以告诉大家,前期学习的基础打扎实了,后期的学习也没那么难。总之就是说难没那么难,说容易也不是那么容易。那么,言归正传,下面让我们一起来聊一聊以太网的学习。 说起以太网,大家可能就会想到百兆以太网、千兆以太网以及万兆以太网等等。局域以太网从10M开始发展,经历几多的变迁,发展到现

3619

[特殊字符] 2026终极实战:Python爬取得物App球鞋实时交易价格 —— 从签名破解到数据可视化全栈指南

价格敏感度:热门鞋款(如Air Jordan 1、Yeezy 350、Dunk SB)价格每分钟都在波动,短线套利空间巨大。稀缺性:限量发售、联名款、地区限定,导致供需关系实时变化。数据壁垒:得物App使用自研WMS签名算法设备指纹绑定动态请求头加密,是爬虫工程师的“练兵场”。本博客将手把手带你从零搭建一套生产级得物球鞋价格爬虫系统,涵盖:抓包与逆向分析(mitmproxy + Frida)签名算法逆向(Python复刻)设备模拟与心跳保活(ADB + uiautomator2)

2201_76125261的博客 1123

1151. 最少交换次数来组合所有的 1

给出一个二进制数组 data,你需要通过交换位置,将数组中 任何位置 上的 1 组合到一起,并返回所有可能中所需 最少的交换次数。 示例 1: 输入:[1,0,1,0,1] 输出:1 解释: 有三种可能的方法可以把所有的 1 组合在一起: [1,1,1,0,0],交换 1 次; [0,1,1,1,0],交换 2 次; [0,0,1,1,1],交换 1 次。 所以最少的交换次数为 1。 示例 2...

码奴生来就只知道前进 2112

智驾芯片&软件分层&测试

智能驾驶相关的芯片,软件分层,测试相关内容

天赐好车的博客 436

力扣(leetcode)每日一题 3191 使二进制数组全部等于 1 的最少操作次数 I |贪心

这个写法是猜的。虽然不知道为什么,但是肯定当前为0的时候进行翻转的贪心策略最终肯定是翻转次数最少的。背后的数学原理我也不懂,但是可以猜测和尝试。1改成0,0改成1 ,可以使用1-x表达式来获取。

ganjiee0007的博客 372

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LeetCode 3191.使二进制数组全部等于 1 的最少操作次数 I:模拟(说是最小操作次数,其实不重复翻转就是了)

LeetCode 3191.使二进制数组全部等于 1 的最少操作次数 I:模拟(说是最小操作次数,其实不重复翻转就是了) 给你一个二进制数组 nums 。 你可以对数组执行以下操作 任意 次(也可以 0 次): 选择数组中 任意连续 3 个元素,并将它们 全部反转 。 反转 一个元素指的是将它的值从 0 变 1 ,或者从 1 变 0 。 请你返回将 nums 中所有元素变为 1 的 最少 操作次数。如果无法全部变成 1 ,返回 -1 。

<font color="Pink">Tisfy的博客</font> 1298

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

(LeetCode) 3191. 使二进制数组全部等于 1 的最少操作次数 I (模拟)

【代码】(LeetCode) 3191. 使二进制数组全部等于 1 的最少操作次数 I (模拟)

记录一些刷过的题并分享学习心得 348

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

leetcode 3191. 使二进制数组全部等于 1 的最少操作次数 I 中等

一个元素指的是将它的值从 0 变 1 ,或者从 1 变 0。如果无法全部变成 1 ,返回 -1。无法将所有元素都变为 1。你可以对数组执行以下操作。中所有元素变为 1 的。

2401_88085478的博客 387

力扣-3191. 使二进制数组全部等于 1 的最少操作次数 I(C++完整代码)

如果最后还有=0的,就是没有反转成 return-1,否则return cnt即可。一个元素指的是将它的值从 0 变 1 ,或者从 1 变 0。如果无法全部变成 1 ,返回 -1。无法将所有元素都变为 1。你可以对数组执行以下操作。中所有元素变为 1 的。

2301_77482405的博客 369

LeetCode 3192.使二进制数组全部等于 1 的最少操作次数 II:位运算模拟

LeetCode 3192.使二进制数组全部等于 1 的最少操作次数 II:位运算模拟 给你一个二进制数组 nums 。 你可以对数组执行以下操作 任意 次(也可以 0 次): 选择数组中 任意 一个下标 i ,并将从下标 i 开始一直到数组末尾 所有 元素 反转 。 反转 一个元素指的是将它的值从 0 变 1 ,或者从 1 变 0 。 请你返回将 nums 中所有元素变为 1 的 最少 操作次数。

<font color="Pink">Tisfy的博客</font> 1247

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

文章浏览阅读115次。如果数组第一个元素就是0,那么第一个元素是肯定要翻转的,而我们只有从索引0的位置开始翻转才可以翻转到第一个元素,其他位置都不行,所以这个翻转是逃不掉的。因为它已经是1了,而只有从索引0的位置开始翻转才能改变到它,为了保持它始终为1,我们应该不再从索引0的位置翻转,既然如此,我们自然是可以把它排除在外。因为翻两次等于没返,所以如果累计翻转次数为奇数并且当前元素的值为0或者是累计翻转次数为偶数并且当前元素的值为1,这两种情况下不需要翻转,反之需要翻转,把记录次数的变量++即可。

m0_63235356的博客 520

[3191]二进制数组全部置一的最少操作次数

给你一个二进制数组nums。你可以对数组执行以下操作次(也可以 0 次):选择 3 个连续数字进行翻转。翻转指的是将 1 变为 0 或者将 0 变为 1。请你返回将nums中所有元素变为 1 的操作次数。如果无法全部变成 1 ,返回 -1。

ziyuexuan2020的博客 570

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

如果数组第一个元素就是0,那么第一个元素是肯定要翻转的,而我们只有从索引0的位置开始翻转才可以翻转到第一个元素,其他位置都不行,所以这个翻转是逃不掉的。因为它已经是1了,而只有从索引0的位置开始翻转才能改变到它,为了保持它始终为1,我们应该不再从索引0的位置翻转,既然如此,我们自然是可以把它排除在外。如果按照上一题的做法做的话是会超时的,因为翻转而循环的次数太多了,如果是剩余的元素都要翻转,实际上我们可以不去真的翻转。主要原因是这十天的题要么简单到爆,要么难到爆,再要么就是最近学校安排实训,时间比较紧。

m0_63235356的博客 599

day-69 使二进制数组全部等于 1 的最少操作次数 II

与3191. 使二进制数组全部等于 1 的最少操作次数 I思路类似,区别在于该题每次将下标i开始一直到数组末尾所有元素反转,所以我们用一个变量可以统计翻转次数。从左向右遍历数组的过程中,有两种情况需要进行翻转:1.当前元素为0且已经翻转次数为偶数;2.当前元素为1且已经翻转次数为奇数。

qq_53568730的博客 526

LeetCode:3191. 使二进制数组全部等于 1 的 最小次数(贪心 java)

遍历,只要遇到0就反转其和其后的两个数。

Cosmoshhhyyy的博客 459

leetcode 3191. 使二进制数组全部等于 1 的最少操作次数-耗时100

Problem:耗时100%,从左到右,见到0就翻转,直到最后没有0了,若i+k>n则返回-1此时不满足翻转条件同一个索引翻转两次相当是没有翻转过,若前一次偶数次翻转的右边界是start=i+k,那么下一次奇数次翻转的左边界就是start,而且偶数次只需要将下一个0翻转出来就行,不妨令偶数次翻转的时候==0的索引是j那么nums[j]==0其他>j且<i+k的可以不用翻转了,因为下一次奇数次翻转相当于没有翻转过所以经过优化以后,耗时就大大下降了。

邹九的个人博客 127

力扣3191.使二进制数全变成1

链接:https://leetcode.cn/problems/minimum-operations-to-make-binary-array-elements-equal-to-one-i/solutions/2819085/cong-zuo-dao-you-xiu-gai-pythonjavacgo-b-k38u/一个元素指的是将它的值从 0 变 1 ,或者从 1 变 0。如果无法全部变成 1 ,返回 -1。无法将所有元素都变为 1。你可以对数组执行以下操作。中所有元素变为 1 的。

m0_54373077的博客 493
上一篇: Leetcode3190. 使所有元素都可以被 3 整除的最少操作数
下一篇: Leetcode3192. 使二进制数组全部等于 1 的最少操作次数 II
UestcXiye
博客等级 码龄8年 9027粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值