当前位置:网站首页>1326. 灌溉花园的最少水龙头数目 动态规划
1326. 灌溉花园的最少水龙头数目 动态规划
2022-07-29 23:17:00 【钰娘娘】
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 <= 1e4ranges.length == n + 10 <= 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;
}
}边栏推荐
- 单片机ds1302时钟程序(51单片机液晶显示程序)
- y81. Chapter 4 Prometheus Factory Monitoring System and Actual Combat -- Monitoring Extension (12)
- MySQL主备切换
- 新版微信小程序发布指南
- MySQL面试题:用户金额充值面试题详解
- 437. 路径总和 III ●●
- DNA偶联二维过渡金属硫化物|DNA修饰贵金属纳米颗粒|使用方法
- Raspberry pie wiringPi 2.6 installed on solving gpio readall command mistakes
- kaniko --customPlatform parameter: support image construction of different platforms (eg: arm, etc.)
- BGP Federal Comprehensive Experiment
猜你喜欢
随机推荐
This article penetrates the architecture design and cluster construction of the distributed storage system Ceph (hands-on)
网工知识角|轻松拿offer【网工面试题】三层交换机与路由器有什么区别?
【无标题】
Why does LabVIEW freeze when saving a VI
kaniko --customPlatform parameter: support image construction of different platforms (eg: arm, etc.)
DFS对树的遍历及一些优化
Farmers on the assembly line: I grow vegetables in a factory
Design for failure常见的12种设计思想
devops学习(五) Jenkins 简单完成持续部署
浅析即时通讯移动端开发DNS域名劫持等杂症
仿牛客论坛项目部署总结
The second round of the real offer harvester~ How does the big factory inspect the candidates?(with detailed answer)
bgp基础配置和宣告
JetsonNano learning (5) JetsonNano installs PyTorch and Torchvision
真offer收割机 第二弹~大厂如何考察候选人?(附答案详解)
[2023 School Recruitment Questions] Summary of Common Interview Questions (7. Common Bus Protocols) (Continuously updated with subsequent interviews....)
How to make labview an application (labview program recognizes shapes)
devops学习(八) 搭建镜像仓库---jenkins推送镜像
微信小程序获取手机号getPhoneNumber接口报错41001
labview怎么做成应用程序(labview程序识别形状)










![Embedded system driver primary [1] - kernel module _ compilation method](/img/72/d3e46a820796a48b458cd2d0a18f8f.png)