LeetCode-2079. 给植物浇水【数组 模拟】

LeetCode-2079. 给植物浇水【数组 模拟】

  • 题目描述:
  • 解题思路一:简单的模拟题,初始化为0,考虑先不浇灌每一个植物
  • 解题思路二:初始化为n,考虑每一个植物需要浇灌
  • 解题思路三:0

题目描述:

你打算用一个水罐给花园里的 n 株植物浇水。植物排成一行,从左到右进行标记,编号从 0 到 n - 1 。其中,第 i 株植物的位置是 x = i 。x = -1 处有一条河,你可以在那里重新灌满你的水罐。

每一株植物都需要浇特定量的水。你将会按下面描述的方式完成浇水:

按从左到右的顺序给植物浇水。
在给当前植物浇完水之后,如果你没有足够的水 完全 浇灌下一株植物,那么你就需要返回河边重新装满水罐。
你 不能 提前重新灌满水罐。
最初,你在河边(也就是,x = -1),在 x 轴上每移动 一个单位 都需要 一步 。

给你一个下标从 0 开始的整数数组 plants ,数组由 n 个整数组成。其中,plants[i] 为第 i 株植物需要的水量。另有一个整数 capacity 表示水罐的容量,返回浇灌所有植物需要的 步数 。

示例 1:

输入:plants = [2,2,3,3], capacity = 5
输出:14
解释:从河边开始,此时水罐是装满的:

  • 走到植物 0 (1 步) ,浇水。水罐中还有 3 单位的水。
  • 走到植物 1 (1 步) ,浇水。水罐中还有 1 单位的水。
  • 由于不能完全浇灌植物 2 ,回到河边取水 (2 步)。
  • 走到植物 2 (3 步) ,浇水。水罐中还有 2 单位的水。
  • 由于不能完全浇灌植物 3 ,回到河边取水 (3 步)。
  • 走到植物 3 (4 步) ,浇水。
    需要的步数是 = 1 + 1 + 2 + 3 + 3 + 4 = 14 。

示例 2:

输入:plants = [1,1,1,4,2,3], capacity = 4
输出:30
解释:从河边开始,此时水罐是装满的:

  • 走到植物 0,1,2 (3 步) ,浇水。回到河边取水 (3 步)。
  • 走到植物 3 (4 步) ,浇水。回到河边取水 (4 步)。
  • 走到植物 4 (5 步) ,浇水。回到河边取水 (5 步)。
  • 走到植物 5 (6 步) ,浇水。
    需要的步数是 = 3 + 3 + 4 + 4 + 5 + 5 + 6 = 30 。
    示例 3:

输入:plants = [7,7,7,7,7,7,7], capacity = 8
输出:49
解释:每次浇水都需要重新灌满水罐。
需要的步数是 = 1 + 1 + 2 + 2 + 3 + 3 + 4 + 4 + 5 + 5 + 6 + 6 + 7 = 49 。

提示:

n == plants.length
1 <= n <= 1000
1 <= plants[i] <= 106
max(plants[i]) <= capacity <= 109

解题思路一:简单的模拟题,初始化为0,考虑先不浇灌每一个植物

class Solution:
    def wateringPlants(self, plants: List[int], capacity: int) -> int:
        cur = capacity
        ans = 0
        for i in range(len(plants)):
            if cur >= plants[i]:
                cur -= plants[i]
                ans += 1
            else:
                cur = capacity - plants[i]
                ans += 2 * i + 1
            # print(i, ans)
        return ans

时间复杂度:O(n)
空间复杂度:O(1)

解题思路二:初始化为n,考虑每一个植物需要浇灌

在这里插入图片描述

class Solution:
    def wateringPlants(self, plants: List[int], capacity: int) -> int:
        ans = len(plants)
        water = capacity
        for i, need in enumerate(plants):
            if water < need:
                ans += i * 2
                water = capacity
            water -= need
        return ans

时间复杂度:O(n)
空间复杂度:O(1)

解题思路三:0


时间复杂度:O(n)
空间复杂度:O(n)


创作不易,观众老爷们请留步… 动起可爱的小手,点个赞再走呗 (๑◕ܫ←๑)
欢迎大家关注笔者,你的关注是我持续更博的最大动力


原创文章,转载告知,盗版必究



在这里插入图片描述


在这里插入图片描述
♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/609230.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

量子城域网建设设备系列(三):网络管理系统(NMS)

在量子保密通信网络中&#xff0c;需要对整个网络的设备进行集中管理和统一维护。主要包括对设备的状态监控、异常告警的采集分析、拓扑管理、设备参数配置、业务策略控制等功能。基于这些需求&#xff0c;在实际的工程应用中&#xff0c;我们通常采用量子网络管理系统&#xf…

Java找不到包解决方案

在跟着教程写Spingboot后端项目时&#xff0c;为了加快效率&#xff0c;有时候有的实体文件可以直接粘贴到目录中&#xff0c;此时运行项目会出现Java找不到包的情况&#xff0c;即无法找到导入的实体文件&#xff0c;这是项目没有更新的原因。解决方法&#xff1a; 刷新Maven:…

详解Java Google Guava

详细介绍 Google Guava是Google为Java开发的开源库集合&#xff0c;它提供了丰富的工具类和集合框架的扩展&#xff0c;旨在提高开发效率和代码质量。Guava包括但不限于集合操作、并发编程辅助、缓存机制、字符串处理、I/O操作、原生类型支持、常见算法实现、函数式编程支持、测…

力扣每日一题- 给植物浇水 II -2024.5.9

力扣题目&#xff1a;给植物浇水 II 题目链接: 2105.给植物浇水 II 题目描述 代码思路 根据题目内容&#xff0c;使用双指针从左右两边同时向中间移动&#xff0c;模拟浇水过程即可。 代码纯享版 class Solution {public int minimumRefill(int[] plants, int capacityA, …

FANUC机器人单轴零点标定时提示无法执行零点标定,由于重力补偿已启用,所有机器人轴的脉冲计数必须有效

FANUC机器人单轴零点标定时提示无法执行零点标定,由于重力补偿已启用,所有机器人轴的脉冲计数必须有效 首先,机器人由于长时间断电未使用,6个轴的编码器数据全部丢失,上电后报警SRVO-062, 有关SRVO-062故障报警的相关内容可参考以下链接: FANUC机器人SRVO-062报警原因分…

windows11如何设置无线网卡不休眠

为了在家里用向日葵等软件连接上公司的台式电脑&#xff0c;发现尴尬的事情&#xff1a;在家里连接时提示公司的电脑下线了。经排查&#xff0c;发现长时间不用时&#xff0c;公司的台式电脑的无线网卡休眠了。 windows11可以用下面的步骤设置无线网卡不休眠&#xff1a; 1. 设…

Sybase数据库分页查询(指定起始位置)

针对单表数据量过大的场景&#xff0c;分页查询必不可少。针对sybase数据库分页查询的案例全网稀少&#xff0c;特别是指定起始页的分页查询实现。 本文依靠实际开发场景&#xff0c;特此总结Sybase数据库分页查询&#xff08;指定起始位置&#xff09;。 目录 一、 SQL实现分…

SQL统计语句记录

1.达梦数据库 统计指定单位的12个月份的业务数据 SELECT a.DEPT_ID, b.dept_name, a.USER_NAME, count(a.dept_id) as count, sum(case when to_char(a.CREATE_TIME,yyyy-mm) 2023-01 THEN 1 else 0 end) as one,sum(case when to_char(a.CREATE_TIME,yyyy-mm) 2023-02 T…

JavaScript手写专题——图片懒加载、滚动节流、防抖手写

图片懒加载场景&#xff1a;在一些图片量比较大的网站&#xff08;比如电商网站首页&#xff0c;或者团购网站、小游戏首页等&#xff09;&#xff0c;如果我们尝试在用户打开页面的时候&#xff0c;就把所有的图片资源加载完毕&#xff0c;那么很可能会造成白屏、卡顿等现象&a…

内网安全-隧道技术SSHDNSICMPSMB上线通讯LinuxMac 简单总结

第126天&#xff1a;内网安全-隧道技术&SSH&DNS&ICMP&SMB&上线通讯Linux&Mac_内网安全-隧道技术_ssh_dns_icmp_smb_上线通讯linux_mac-CSDN博客 内网渗透—隧道技术_隧道技术csdn-CSDN博客 #SMB 隧道&通讯&上线 判断&#xff1a;445 通讯 上…

Azure Windows2012升级2016

Azure Windows2012升级2016 在自己电脑配置Azure PowerShell前置条件PowerShell 登录到 Azure Azure 中运行 Windows Server 的 VM 的就地升级前置条件&#xff0c;生成一块OS磁盘将生成的OS磁盘附件到需升级的服务器执行就地升级到 Windows Server 2016 升级后配置故障恢复 在…

一觉醒来 AI科技圈发生的大小事儿 05月09日

&#x1f4f3;AlphaFold 3 重磅问世&#xff0c;全面预测蛋白质与所有生命分子相互作用及结构&#xff0c;准确性远超以往水平 Google DeepMind发布了AlphaFold3模型&#xff0c;能够联合预测蛋白质、核酸、小分子等复合物结构&#xff0c;准确性显著提高&#xff0c;对跨生物…

代码随想录算法训练营第36期DAY22

DAY22 654最大二叉树 自己做的时候忽略了&#xff1a;nums.length>1的题给条件。所以每次递归都要判断是否size()>1&#xff0c;不要空的。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *rig…

让数据更「高效」一点!IvorySQL在Neon平台上的迅速部署和灵活应用

IvorySQL本身就是一个100%兼容PostgreSQL最新内核的开源数据库系统&#xff0c;而Neon Autoscaling Platform通常支持多种数据库和应用程序。将IvorySQL集成到该平台后&#xff0c;可以进一步增强与其他系统和应用程序的兼容性&#xff0c;同时更全面的体验IvorySQL的Oracle兼容…

深入探究 Spring Boot Starter:从概念到实践

序言 Spring Boot Starter 是 Spring Boot 生态系统中的一个核心概念&#xff0c;它为开发者提供了一种便捷的方式来捆绑和配置应用程序所需的依赖项。本文将深入探讨 Spring Boot Starter 的概念、原理以及如何创建自定义的 Starter。 一、什么是 Spring Boot Starter Spri…

docker 安装elasticsearch8.X

docker 安装elasticsearch8.X 安装elasticsearch8.X前言安装elasticsearch安装elasticsearch-analysis-ik安装kibana 安装elasticsearch8.X 前言 由于需要安装elasticsearch、IK分词插件、kibana。所以需要保持这三者的版本一致性。 elasticsearch 8.12.2 kibana 8.12.2 ela…

科沃斯梦碎“扫地茅”,钱东奇跌落“风口”

昔日“扫地茅“不香了&#xff0c;科沃斯跌落神坛。 4月27日&#xff0c;科沃斯发布2023年报显示&#xff1a;2023年&#xff0c;科沃斯的营收为155.02亿元&#xff0c;同比增加1.16%&#xff1b;同期&#xff0c;净利为6.10亿元&#xff0c;同比减少63.96%。科沃斯的经营业绩…

Mysql数据在磁盘上的存储结构

一. 前言 一行数据的存储格式大致如下所示: 变长字段的长度列表&#xff0c;null值列表&#xff0c;数据头&#xff0c;column01的值&#xff0c;column02的值&#xff0c;column0n的值… 二. 变长字段 在MySQL里有一些字段的长度是变长的&#xff0c;是不固定的&#xff0c;…

可视化-实验五-Pyecharts工具包的使用及文本数据可视化

1.2.1 pyecharts的数据类型以及新的数据导入逻辑 由于pyecharts背后封装的js库&#xff0c;会涉及到数据类型转化。它暂时要求输入数据必须是python的基础数据类型&#xff0c;比如字符串&#xff0c;列表&#xff0c;字典&#xff0c;而不能是序列这样的数据类型。因此序列输入…

RockChip Android13 添加/删除ListPreference方法

概述: 本章将讲述在Android添加或删除ListPreference的几种方法,并以EthernetSettingsActivity为例,添加/删除一项ListPreference: 默认效果图: 添加后效果图: 方法一: 1、全部添加xml 在Activity类中使用addPreferencesFromResource()方法解析XML文件并添加Prefere…