1326. 灌溉花园的最少水龙头数目 动态规划
1326. 灌溉花园的最少水龙头数目
在 x 轴上有一个一维的花园。花园长度为
n
,从点0
开始,到点n
结束。花园里总共有
n + 1
个水龙头,分别位于[0, 1, ..., n]
。给你一个整数
n
和一个长度为n + 1
的整数数组ranges
,其中ranges[i]
(下标从 0 开始)表示:如果打开点i
处的水龙头,可以灌溉的区域为[i - ranges[i], i + ranges[i]]
。请你返回可以灌溉整个花园的 最少水龙头数目 。如果花园始终存在无法灌溉到的地方,请你返回 -1 。
示例 1:
输入:n = 5, ranges = [3,4,1,1,0,0] 输出:1 解释: 点 0 处的水龙头可以灌溉区间 [-3,3] 点 1 处的水龙头可以灌溉区间 [-3,5] 点 2 处的水龙头可以灌溉区间 [1,3] 点 3 处的水龙头可以灌溉区间 [2,4] 点 4 处的水龙头可以灌溉区间 [4,4] 点 5 处的水龙头可以灌溉区间 [5,5] 只需要打开点 1 处的水龙头即可灌溉整个花园 [0,5] 。示例 2:
输入:n = 3, ranges = [0,0,0,0] 输出:-1 解释:即使打开所有水龙头,你也无法灌溉整个花园。提示:
1 <= n <= 1e4
ranges.length == n + 1
0 <= ranges[i] <= 100
做题结果
失败,完全没思路,因为一般这种题都是枚举的,这100不能用位运算,就很迷茫
方法:动态规划
1. 确定左右边界,在右边界的位置标记左边界,选择尽量靠左的边界
2. 链接上一段,在本段范围内,选择上一段的基础上+1
3. 注意不存在的右端点直接跳过
class Solution {public int minTaps(int n, int[] ranges) {int[] prev = new int[n+2];Arrays.fill(prev,n);for(int i = 0; i < ranges.length; i++){int left = Math.max(0,i-ranges[i]);int right = Math.min(n,i+ranges[i]);prev[right]=Math.min(left,prev[right]);}// System.out.println(Arrays.toString(prev));int []dp = new int[n+1];Arrays.fill(dp,Integer.MAX_VALUE/2);dp[0]=0;for(int i = 1; i <= n; i++){if(prev[i]==n) continue;for(int j = prev[i];j<i;j++){dp[i] = Math.min(dp[i],dp[j]+1);}}return dp[n]<Integer.MAX_VALUE/2?dp[n]:-1;}
}
1326. 灌溉花园的最少水龙头数目 动态规划相关推荐
- 【算法leetcode】1557. 可以到达所有点的最少点数目(rust和go我都要)
文章目录 1557. 可以到达所有点的最少点数目: 样例 1: 样例 2: 提示: 分析 题解 rust go typescript python c c++ java 原题传送门:https://l ...
- 【LeetCode】Day119-找到小镇的法官可达所有点的最少点数目
题目1.找到小镇的法官 997. 找到小镇的法官[简单] 题解 还挺有意思的一道题,像狼人杀一样哈哈,模拟的是图的入度和出度 class Solution {public int findJudge( ...
- 火车最少钢轨数目问题
-个博物馆收藏了不同的火车,同地区的火车需要的铁路宽度是不一样的.现在这个博物馆为了陈列火车需要一些铁路. 每条铁路可以看作是由两根平行钢轨组成 的,只要把两条钢轨的距离摆放合适了,就可以放置对应的火 ...
- hdu 1257最少拦截系统 动态规划
最少拦截系统 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Problem Desc ...
- LeetCode 2086. 从房屋收集雨水需要的最少水桶数 -- 动态规划
从房屋收集雨水需要的最少水桶数 中等 26 相关企业 给你一个下标从 0 开始的字符串 street .street 中每个字符要么是表示房屋的 'H' ,要么是表示空位的 '.' . 你可以在 空位 ...
- 力扣题目——1557. 可以到达所有点的最少点数目
注:本文的代码实现使用的是 JS(JavaScript),为前端中想使用JS练习算法和数据结构的小伙伴提供解题思路. 描述 给你一个有向无环图, n 个节点编号为 0 到 n-1 ,以及一个边数组 e ...
- 如何学好C语言--你的学渣朋友告诉你
光说不练假把式,光练不说傻把式,又练又说真把式. 真实感受,不是我不想学,是我真的不知道我哪里不会啊和得怎么做啊?本文作者当初就是这么废掉的 推荐两个练习的网站 (一)C语言网 https://www ...
- 贪心(Greedy Algorithm)
贪心(Greedy Algorithm) 贪心 44.通配符匹配 45.跳跃游戏 II 55.跳跃游戏 122.买卖股票的最佳时机II 134.加油站 135.分发糖果 179.最大数 277.搜寻名 ...
- LeetCode 700题 题解答案集合 Python
2019.5.12更新至题号796,目前共有265题. 2019.5.26更新至题号72, 目前共有347题. 2019.6.16更新至题号70,目前共有382题. 2019.7.7更新至题号5120 ...
最新文章
- Paddle预训练模型应用工具PaddleHub
- LOJ 2721 「NOI2018」屠龙勇士——扩展中国剩余定理
- 减免租金?也要体谅业主难处哟
- CALayer 知识:创建带阴影效果的圆角图片图层和创建自定义绘画内容图层
- Jquery--遮罩弹窗特效
- SDN控制器部署相关工作—Vecloud
- 在TABLE CONTROL 输入完一行记录,按回车的时候光标自动移动到下一行
- 方立勋_30天掌握JavaWeb_response
- LeetCode 1136. 平行课程(拓扑排序)
- java 自动类型_java类型自动转换
- jquery设置表单元素只读_jQuery为文本框添加只读属性readOnly
- VisionPro软件笔记
- 嵌入式远程岗位、兼职、接单、众包平台
- 一篇文章入门Spring
- [VCS]filelist.list的做法
- 榕树说技术支持(Rong Zhiyun technical support)
- SM2RAIN-ASCAT全球规模降雨产品数据集(2007年-2020年6月)
- 【LeetCode】417. Pacific Atlantic Water Flow 太平洋大西洋水流问题
- clahe(限制对比度自适应直方图均衡化)
- ldr,str指令作用,详解