LeetCode题目笔记——2357. 使数组中所有元素都等于零

2023-10-31

题目描述

给你一个非负整数数组 nums 。在一步操作中,你必须:

  • 选出一个正整数 x ,x 需要小于或等于 nums 中 最小 的 非零 元素。
  • nums 中的每个正整数都减去 x。

返回使 nums 中所有元素都等于 0 需要的 最少 操作数。

 

示例 1:

输入:nums = [1,5,0,3,5]
输出:3
解释:
第一步操作:选出 x = 1 ,之后 nums = [0,4,0,2,4] 。
第二步操作:选出 x = 2 ,之后 nums = [0,2,0,0,2] 。
第三步操作:选出 x = 2 ,之后 nums = [0,0,0,0,0] 。

示例 2:

输入:nums = [0]
输出:0
解释:nums 中的每个元素都已经是 0 ,所以不需要执行任何操作。

 

提示:

  • 1 <= nums.length <= 100
  • 0 <= nums[i] <= 100

题目链接

题目难度——简单

方法一:直接模拟

  按照题目说的,我们在每一步找到当前数组中最小的非零整数,然后执行操作,直到所有元素和为0。

代码/Python

class Solution:
    def minimumOperations(self, nums: list[int]) -> int:
        total = sum(nums)
        res = 0
        size = len(nums)
        while total:
            minium = 101
            for x in nums:
                if x < minium and x:
                    minium = x
            for i in range(size):
                if nums[i] > 0:
                    nums[i] -= minium
                    total -= minium
            
            res += 1
        
        return res
        

方法二:哈希表

  直接模拟可以看到是比较慢的,进一步思考,我们在每一步都把当前元素里最小的元素都减掉,就能保证最少的操作次数,而我们不必关心具体的数值是多少,只在乎有多少个不同的数就行了,每次减去当前最小的非0整数就可以。

代码/Python

class Solution:
    def minimumOperations(self, nums: list[int]) -> int:
        count = Counter(nums)
        return sum(k != 0 for k, v in count.items())
        

在这里插入图片描述

总结

  方法一时间复杂度O(N),空间复杂度O(1), 方法二时间复杂度O(N),空间复杂度O(N)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeetCode题目笔记——2357. 使数组中所有元素都等于零 的相关文章

随机推荐

  • OpenTsdb官方文档----日期和时间

    查询数据时 OpenTSDB支持许多日期和时间格式 在通过GUI CliQuery工具或HTTP API提交的查询中支持以下格式 每个查询都需要一个开始时间和一个可选结束时间 如果未指定结束时间 则将使用运行TSD的系统上的当前时间 相对的
  • 战舰世界选服务器删除什么文件夹,《战舰世界》常见问题解决方案合集

    虚拟内存导致的无前提闪退 表现为 1 无弹出窗口 2 闪退后桌面分辨率会突然变大然后变正常 问题常出现于 win7 win8 1 win10 x86框架下的32位系统 解决方法 修改虚拟内存为系统实际物理内存的1 5倍 例如我是win10
  • [Win11] PowerShell无法激活Conda虚拟环境

    目录 一 问题背景 二 解决方案 一 问题背景 按照教程1安装Typora时 需使用PowerShell执行Python命令 然而 Win11 PowerShell无法激活Conda虚拟环境 报错如下图所示 二 解决方案 根据报错 发现无法
  • Vue.js实战读书笔记--计算属性

    计算属性 3 1 什么是计算属性 在双方绑定过程中如果有过长的数据 表达式或者复杂逻辑业务时 应将所有的计算属性都以函数的形式写在Vue实例的computed选项内 最终返回计算后的结果 举例 改写前 div text split reve
  • ESP32-C3系列模组简介

    ESP32 C3是一款安全稳定 低功耗 低成本的物联网芯片 搭载RISC V 32位单核处理器 为物联网产品提供行业领先的射频性能 完善的安全机制和丰富的内存资源 嵌入式智能终端 无线WIFI技术以及Internet的广泛应用必将使家居控制
  • [Python系列-15]:人工智能 - 数学基础 -5- 向量内积(点乘)和外积(叉乘)概念及几何意义

    作者主页 文火冰糖的硅基工坊 https blog csdn net HiWangWenBing 本文网址 https blog csdn net HiWangWenBing article details 119322764 TBD ht
  • 听我一句劝,千万别去外包,两年外包生涯做完,感觉自己废了一半....

    先说一下自己的情况 大专生 18年通过校招进入湖南某软件公司 干了接近5年的点点点 今年年上旬 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了五年的功能测试 已经让我变得不思进取 谈了2年的女朋友
  • 基础爬虫记~豆瓣+东方财富网爬虫

    基础小白 大佬轻点喷 一 基础豆瓣爬虫 1 首先在某站上听讲解 简单建立起了对爬虫的基础框架 具体包括五个板块 当然 有些东西看个人 可写成函数 也可以直接写 但重复用到的东西建议写函数 用到了下面五个库 from bs4 import B
  • 第五周:基于PIL的Python图像处理

    安装PIL注意 不是pip install Python Image Library 而是Pip install pillow pip算是PIL的一个分支 借助它我们可以完成 图像基本操作 缩放 裁剪 旋转 色彩转换 1 引用PIL fro
  • Linux Ubuntu 20.04LTS安装OpenSSL步骤

    其实 Ubuntu 20 04LTS 系统自带 OpenSSL 的 但是这个自带的openssl是没有 lt 头文件 h gt 和 lt 动态库文件 so及静态库文件 a gt 对于开发人员编程来说用不了 编译就报错找不到头文件 接口未定义
  • sqli-labs————less 23(高级注入篇)

    前言 从这一关开始 我们进进入了短暂的高级注入部分 这一部分中将会陆续介绍一些更为巧妙的注入技巧 Less 23 查看一下源代码
  • VS2013及QT安装

    参考如下链接 QT下载 QT下载 VS2013及QT安装 https jingyan baidu com article e8cdb32b132cd637052bade4 html
  • egg.js + mysql + windows 踩坑全纪录

    资料 egg js文档 https www eggjs org zh CN intro quickstart 背景 前面的都很简单 按照官方文档配置即可 全部调通以后 开始接触数据库mysql 因为米有后台开发背景 所以需要从头开始 步骤
  • Error:java: 无法从静态上下文中引用非静态 变量 this

    Error java 无法从静态上下文中引用非静态 变量 this 分析 出现这种错误首先先分清什么是静态什么是非静态 它们之间的关系是什么 静态方法中不能引用非静态变量 非静态方法中能引用静态变量 错误原因代码如下 public clas
  • 关于pd.read_excel()读取xls文件报错的解决办法

    报错信息 File E Python lib site packages xlrd compdoc py line 426 in locate stream raise CompDocError s corruption seen d d
  • 电商数据部分展示

    京东链接 商品id 标题 价格部分数据展示 淘宝标题 价格 优惠价格 链接部分数据展示
  • 跳动的爱心(c++版)

    include
  • 科教兴国

    在这个时代 人工智能的奇迹交织成一片璀璨的星河 在这片星河中 各大企业如同星辰 闪烁着探索的光芒 寻找着那些志同道合的伙伴 我们并肩飞翔 穿越信息的海洋 共同描绘出未来的蓝图 每一次合作 都如同星星之间的碰撞 擦出创新的火花 为这个时代注入
  • Linux安装JDK、Redis、MySQL、RabbitMQ、Minio、Nginx.......

    文章目录 一 环境准备 二 安装JDK 三 安装MySQL 四 安装Redis 三 安装RabbitMQ 四 安装Minio 五 安装Nginx 特殊情况处理 Centos7挂载磁盘 服务器时间同步 MySQL数据库时间同步 安装解压软件
  • LeetCode题目笔记——2357. 使数组中所有元素都等于零

    文章目录 题目描述 题目链接 题目难度 简单 方法一 直接模拟 代码 Python 方法二 哈希表 代码 Python 总结 题目描述 给你一个非负整数数组 nums 在一步操作中 你必须 选出一个正整数 x x 需要小于或等于 nums