当前位置:网站首页>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;
}
}边栏推荐
- 【leetcode】剑指 Offer II 006. 排序数组中两个数字之和(二分查找、双指针)
- 【C语言】链表详解(无头单向非循环)
- DNA修饰的上转换纳米材料|聚胞苷酸Poly-C DNA修饰的氧化石墨烯|解析说明
- devops学习(十) Jenkins 流水线
- 树莓派上安装 wiringPi 2.6 解决 gpio readall 命令的错误
- 重写并自定义依赖的原生的Bean方法
- DFS对树的遍历及一些优化
- idea设置自动去除未引用(不再引用)的引用
- [2023 School Recruitment Questions] Summary of Common Interview Questions (7. Common Bus Protocols) (Continuously updated with subsequent interviews....)
- The sequence table of the linear table (the dry goods are full of sharing ~ contains all the function codes of the sequence table~
猜你喜欢

Implementation and implementation of Any to Any real-time voice change丨RTC Dev Meetup

BGP Federal Comprehensive Experiment

高数下|三重积分习题课|高数叔|手写笔记

devops学习(七) sonarqube 代码质检工具

桌面软件开发框架大赏

超分之RVRT

High Numbers|Calculation of Triple Integral 3|Uncle High Numbers|Handwritten Notes

Three chess (written in C language)

The latest Gansu construction welder (construction special operation) simulation question bank and answer analysis in 2022

Design for failure常见的12种设计思想
随机推荐
Qt uses QSortFilterProxyModel for sorting and filtering in QML
devops学习(三) K8环境部署jenkins
devops学习(六)Jenkins 持续部署-版本选择
DNA修饰碳纳米管|DNA修饰单层二硫化钼|DNA修饰二硫化钨(注意事项)
NetWorker Knowledge Corner|Easy to get an offer [Networker Interview Questions] What is the difference between a Layer 3 switch and a router?
新标杆!美创科技助力广西桂林某三甲医院实现勒索病毒主动防御
The Sandbox 与 Gravity 达成合作,将《RO仙境传说》带入元宇宙
Access the company intranet
devops学习(九) Helm工具--持续部署
canvas 中如何实现物体的点选(五)
Why does LabVIEW freeze when saving a VI
访问公司内网
很遗憾,没有一篇文章能讲清楚分布式事务
BGP联邦综合实验
微信小程序获取手机号getPhoneNumber接口报错41001
Mysql内外连接
kaniko --customPlatform参数:支持不同平台的镜像构建(如:arm等)
【leetcode】剑指 Offer II 006. 排序数组中两个数字之和(二分查找、双指针)
2022年最新甘肃建筑施工焊工(建筑特种作业)模拟题库及答案解析
[2023 School Recruitment Questions] Summary of Common Interview Questions (7. Common Bus Protocols) (Continuously updated with subsequent interviews....)
