【LeetCode】每日一题 2024_10_18 使二进制数组全部等于 1 的最少操作次数 I(贪心)

ops/2024/10/19 0:18:07/

前言

每天和你一起刷 LeetCode 每日一题~

LeetCode 启动!

题目:leetcode.cn/problems/minimum-operations-to-make-binary-array-elements-equal-to-one-i/description/?envType=daily-question&envId=2024-10-18" rel="nofollow">使二进制数组全部等于 1 的最少操作次数 I

昨天的题目写不出来 . . . 如果我哪一天突然断更了,不用怀疑,就是那天的每日一题我写不了一点呜呜

代码与解题思路

今天的题目可以说是贪心,也可以说是脑筋急转弯,只要想到就很容易把代码写出来 . . . 不过老规矩,先读读题目

题目让我们:

选择数组中任意 连续 3 个元素,并将它们全部反转

返回能将数组变成 1 的最少次数,如果失败就返回 -1

核心思路:

因为我们要反转的是连续的三个元素,而数组所有元素要变成 1,只有一种解法,那就是从左往右遍历找所有的 0,然后全部进行反转,走过的位置不再重复遍历,保证元素都是 1

遇到 0 就反转,假设遍历到最后并不能让数组全为 1,那无论怎么反转都不能让数组变为 1 了。

思路略抽象,但是思考模拟一下就也比较容易理解。

func minOperations(nums []int) (ans int) {n := len(nums)for i, v := range nums[:n-2] {if v == 0 {nums[i] = 1nums[i+1] ^= 1nums[i+2] ^= 1ans++}}if nums[n-2] == 0 || nums[n-1] == 0 {return -1}return ans
}

补充:

反转 0 和 1 的小技巧,可以直接用异或 1 的操作:相同为 0,相异为 1。假设原数字是 1,那相同为 0 就反转成 0;假设原数字为 0,相异为 1 就反转成 1 了。

(PS:其实代码中 nums[i] = 1 是多余的,因为最后的判断只看倒数后两个元素是否为 0,前面遍历过的元素默认已经进行了反转操作)

每天进步一点点,我们明天不见不散~

可以和我刷一辈子的每日一题吗?
一题一题,积累起来就是一辈子。


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

相关文章

嵌入式系统---看门狗

在嵌入式系统中,看门狗定时器(Watchdog Timer,WDT)是一种常用的机制,用于检测和恢复系统在异常情况下的故障。如果系统因为某种原因(如软件死循环)而变得无响应,看门狗定时器可以自动…

【代码随想录——数组——二刷】

数组 1. 二分查找(704) 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 1.1 二分法的第一种写法 我们定义 target 是在…

如何在算家云搭建Video-Infinity(视频生成)

一、模型介绍 Video-Infinity是一个先进的视频生成模型,使用多个 GPU 快速生成长视频,无需额外训练。它能够基于用户提供的文本或图片提示,创造出高质量、多样化的视频内容。 二、模型搭建流程 1.大模型 Video-Infinity 一键使用 基础环境…

一个transitional中操作两个不同的数据源的service

问题 问题就是使用了transitional注解之后会让DS注解失效。 解决办法 业务逻辑主入口这里正常使用Transactional注解。 package org.springblade.wlw.service.impl;import com.baomidou.dynamic.datasource.annotation.DS; import org.springblade.wlw.pojo.entity.waterda…

【工具篇】MLU运行XInference部署手册

文章目录 前言一、平台环境准备二、代码下载三、安装部署1.正常pip 安装 四、运行结果展示1.如果界面404或没有东西请这样做2.运行效果 前言 Xorbits Inference(Xinference)是一个功能强大、用途广泛的库,旨在为语言、语音识别和多模态模型提…

如何将本地磁盘镜像包部署到docker中(以mysql5_7.tar.gz为例)

1.复制文件到宿主机 2.找到对应目录,docker load docker images就可以看到该镜像啦

尚硅谷rabbitmq2024 集群篇 流式队列 第54节 答疑

二、负载均衡 在文件/etc/haproxy/haproxy.cfg末尾追加: frontend rabbitmq_stream_frontendbind 192.168.200.100:33333mode tcp default_backend rabbitmg_stream_backend backend rabbitmg_stream_backendmode tcp balance roundrobin server rabbitmg1 192.168.200.100:555…

ArcGIS 最新底图服务地址

ArcGIS 最新底图服务地址 说明 先上地址: 地形图: https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer深色地形图:https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hi…