LeetCode-1326. Minimum Number of Taps to Open to Water a Garden

2023-11-07

There is a one-dimensional garden on the x-axis. The garden starts at the point 0 and ends at the point n. (i.e The length of the garden is n).

There are n + 1 taps located at points [0, 1, ..., n] in the garden.

Given an integer n and an integer array ranges of length n + 1 where ranges[i] (0-indexed) means the i-th tap can water the area [i - ranges[i], i + ranges[i]] if it was open.

Return the minimum number of taps that should be open to water the whole garden, If the garden cannot be watered return -1.

 

Example 1:

Input: n = 5, ranges = [3,4,1,1,0,0]
Output: 1
Explanation: The tap at point 0 can cover the interval [-3,3]
The tap at point 1 can cover the interval [-3,5]
The tap at point 2 can cover the interval [1,3]
The tap at point 3 can cover the interval [2,4]
The tap at point 4 can cover the interval [4,4]
The tap at point 5 can cover the interval [5,5]
Opening Only the second tap will water the whole garden [0,5]

Example 2:

Input: n = 3, ranges = [0,0,0,0]
Output: -1
Explanation: Even if you activate all the four taps you cannot water the whole garden.

Example 3:

Input: n = 7, ranges = [1,2,1,0,2,1,0,1]
Output: 3

Example 4:

Input: n = 8, ranges = [4,0,0,0,0,0,0,0,4]
Output: 2

Example 5:

Input: n = 8, ranges = [4,0,0,0,4,0,0,0,4]
Output: 1

 

Constraints:

  • 1 <= n <= 10^4
  • ranges.length == n + 1
  • 0 <= ranges[i] <= 100

题解:

之前按点算的,一直不对,看讨论区是按区间算的,dp[1]代表0-1这个区间。

动态规划问题:先遍历每个喷头的喷射范围,然后计算范围内需要的喷头最小数。

class Solution {
public:
    int minTaps(int n, vector<int>& ranges) {
        vector<int> dp(n + 1, 1000);
        dp[0] = 0;
        for (int i = 0; i <= n; i++) {
            int left = max(0, i - ranges[i]);
            int right = min(n, i + ranges[i]);
            for (int j = left; j <= right; j++) {
                dp[j] = min(dp[j], dp[left] + 1);
            }
        }
        if (dp[n] >= 1000) {
            return -1;
        }
        return dp[n];
    }
};

 

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

LeetCode-1326. Minimum Number of Taps to Open to Water a Garden 的相关文章

  • 高通功耗调试18之Tsensor中断频繁触发导致低温下待机功耗高的问题

    问题背景 在内核4 9及之后的版本 低于5C环境温度下待机 由于触发了Tsensor的低温保护机制 可能会遇到较频繁 的tsens中断 11 22 07 12 27 914969 0 0 W GICv3 gic show resume ir
  • [echarts]柱状图的点击事件

    先来一段简洁的写echarts图表的代码 这样获取echarts的dom节点是因为 如果将柱状图封装成了一个组件 在一个页面中多次使用 若还是按常规获取dom节点 会报一个警告 let charts echarts getInstanceB
  • Linux驱动开发(应用程序如何调用驱动)

    1 添加读写接口 1 在应用代码中 2 在驱动代码中 2 应用和驱动之间的数据交换 1 copy from user 用来将数据从用户空间复制到内核空间 2 copy to user 用来将数据从内核空间复制到用户空间 3 write和re
  • DAPM之一:概述

    DAPM Dynamic Audio Power Management 对应结构体是snd soc dapm widget和snd soc dapm route 对应的操作函数是snd soc dapm new controls snd s

随机推荐

  • C++对象模型和this指针

    C 对象模型和this指针 成员变量和成员函数分开存储 在C 中 类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 include
  • 逐梦C++补遗篇之一:cout与cerr的区分

    逐梦C 补遗篇之一 cout与cerr的区分 1 从定义看区别 cout 标准输出流 带缓冲 默认输出目的地为屏幕 可以被重定向 cerr 标准错误输出 不带缓冲 输出目的地为屏幕 一般不被重定向 缓冲 带缓冲 就是系统会为你分配一个缓冲区
  • 精彩观点一览

    7月20日下午 大模型的发展路径论坛于北京成功举办 大模型的发展路径论坛作为2023中国互联网大会的分论坛之一 由中国互联网协会人工智能工作委员会承办 中国信通院云计算与大数据研究所 华为云大数据与AI业务协办 并得到阿里云 北京智源研究院
  • 理解什么是 JMM

    理解什么是 JMM 本文已收录至 GitHub https github com yifanzheng java notes Java 虚拟机是一个完整的计算机的一个模型 因此这个模型自然也包含一个内存模型 Java 内存模型 也就是说 J
  • 最短路算法——Dijkstra

    Dijkstra 在大多数最短路径问题中 Dijkstra 算法是最常用 效率最高的 它是一种 单源 最短路径算法 一次计算能得到从一个起点 s 到其他所有点的最短距离长度 最短路径的途径点 一 Dijkstra的算法思想 Dijkstra
  • Upload LABS Pass-6

    第六关在后端使用了黑名单 并过滤了大小写和点 但未过滤空格 我们使用代理抓包在后缀名中添加空格 即可绕过黑名单 准备一个 6 php 文件 内容为一句话木马 上传 6 php 文件 并开启代理 此处使用 Burp Suite 拦截请求 在文
  • python旋转矩阵_python将四元数变换为旋转矩阵

    import numpy as np from autolab core import RigidTransform 写上用四元数表示的orientation和xyz表示的position orientation y 0 697127881
  • java代码的四层结构

    一 util包 放共同类的包 整个项目中 可以共用的一些代码 例如 一些常用的字符串的非空验证 身份证或者电话号码的正则验证等等 1 JDBC类功能的封装 package util import java io IOException im
  • VsCode中修改/重置gitlab远程仓库地址

    A 更换git远程仓库地址 1 查看当前remotes git remote v 2 修改remotes git remote set url origin https github com test test git B 重置git远程仓
  • Spring Boot中单元测试数据库的切换策略

    问题缘起 单元测试默认情况下使用嵌入式数据库 例如H2 如果要切换为MySQL 直接移除H2驱动 在application properties yml 配置相应的连接信息 都不起作用 那该如何切换配置呢 单元测试数据库 在SpringBo
  • 如何给Python写注释

    给程序写注释是一个很好的习惯 提高程序的可读性 写注释是不可少的步骤 Python与其他语言一样提供了两种注释方法 单行注释和多行注释 单行注释 Python中使用 进行单行注释 这里是一个单行注释 print 翔宇亭IT乐园 www bi
  • ap忘记管理ip地址怎么办_路由器刷集客固件,低成本实现AC+AP组网

    某讯K2T路由器刷集客固件 可以作为无线AP使用 多个K2T实现无缝漫游功能 通过微AC或者ESXI安装集客AC可以实现对AP进行管理 低成本的实现AC AP组网 确定版本号140版本 158以上版本的需要拆机 操作步骤 第一步 开启tel
  • 2019中国城市排名出炉——2019新一线城市有没有你的家乡!?

    新一线城市研究所在上海发布 2019城市商业魅力排行榜 新一线城市研究所收集了170个主流消费品牌的商业门店数据 18家各领域头部互联网公司的用户行为数据和数据机构的城市大数据 对337个中国地级及以上城市进行了评估 排行榜沿用了上一年的五
  • java集合框架

    这图画的真洒脱 光一个stack就有很多可探索了
  • 那些年踩过的坑——服务器中文路径

    从11年学编程至今已有十个年头 其实有时候也很后悔选择这个专业 整日和电脑相偎相依 人的思维和沟通能力也趋向机器 和别人聊天也不知道怎么开口 算法的一个评定标准就是以最少的语句实现所需的功能 但和别人聊天则不能这样 太直接简单会让人变得无趣
  • 总结了9款Mac端超好用的免费开源软件,你还有更好的推荐吗?

    与Windows相比 Mac上的软件 不仅不稀缺 并且大多数都更加精致 还没有乱七八糟烦人的弹窗骚扰 所以 本期就为大家盘点盘点Mac上有超好用的免费开源神器 1 Tincta 官网 https codingfriends github i
  • glibc堆内存管理

    glibc堆内存管理 背景 应用出现SIGABRT crash 报错信息为 malloc invalid size unsorted 即是在应用调用malloc分配内存时出现异常导致的crash 管理结构 进程虚拟地址空间被划分为代码段 数
  • eclipse下JNI的初步实现

    eclipse下JNI的初步实现 JNI java native interface 为java应用程序提供调用本地方法的接口 The standard Java class library may not support the plat
  • build打包后怎么查看源码 vue_vue2源码解析一:打包与构建流程

    本系列文章 基于vue 2 6 11进行解析 不追究每行代码分析清楚 但求把握大体的重点 比如源码构建流程 如何实现数据双向绑定 如何解析模板 如何解析一个组件的data method computed等属性 如何实现在weex web等多
  • LeetCode-1326. Minimum Number of Taps to Open to Water a Garden

    There is a one dimensional garden on the x axis The garden starts at the point 0 and ends at the point n i e The length