当前位置: 首页 > news >正文

赶集网招聘信息流优化师证书

赶集网招聘,信息流优化师证书,小门户网站模板,网站制作技术介绍x轴上的花园范围为[0,n], 0~n这个n1个离散点上有水龙头,第 i 个水龙头能浇水的范围为[i-ranges[i], iranges[i]]. 求能浇整个花园的最小水龙头个数。 思路: 方法一: greedy 先把每个水龙头能浇的区间准备好, 用一个数组保存所有…

在这里插入图片描述

x轴上的花园范围为[0,n], 0~n这个n+1个离散点上有水龙头,第 i 个水龙头能浇水的范围为[i-ranges[i], i+ranges[i]].
求能浇整个花园的最小水龙头个数。

思路:

方法一
greedy

先把每个水龙头能浇的区间准备好,
用一个数组保存所有区间,数组下标为区间起点,数组内容为区间终点。

然后从左到右遍历这个数组,到这里就和55题Jump Game类似了。
用一个变量canReach表示到目前的水龙头为止能浇到的最远距离。preEnd表示前一个水龙头的区间终点。

如果当前位置 > preEnd,说明需要开一个新的水龙头,
但是如果这时canReach <= preEnd(前一水龙头处能浇到的最远距离也无法到达当前位置,后面有说明),说明无法到达,返回-1.
更新preEnd到canReach (canReach这时还没有更新,即preEnd更新到前一个水龙头为止的最远范围). 水龙头个数+1.
把canReach更新到和当前区间终点相比的较大值。

有一个特殊情况要注意下,就是Example2中ranges[i]=0的情况。
注意能浇水到整个花园说明不止是离散点i , i+1, …能浇到,i 到 i+1之间的连续点部分也必须在区间中。
而ranges[i] = 0 表示只能浇到离散点 i 本身。比如1,2点能浇到,但它们之间的1.1, 1.2, …都不在浇灌范围。
所以在处理区间时,canReach必须能到达当前点才算满足条件。

    public int minTaps(int n, int[] ranges) {int preEnd = 0;int canReach = 0;int[] startEnd = new int[n+1];int cnt = 0;for(int i = 0; i <= n; i++) {if(ranges[i] == 0) continue;int start = (i - ranges[i] < 0 ? 0 : i - ranges[i]);int end = (i + ranges[i] > n ? n : i + ranges[i]);startEnd[start] = end;}for(int i = 0; i <= n; i++) {if(i > preEnd) {if(canReach <= preEnd) return -1;cnt ++;preEnd = canReach;}if(startEnd[i] > canReach) canReach = startEnd[i];}//cnt是前一区间满足条件时在当前区间加的,最后一个区间没有下一区间去处理,所以要在最后处理一下//如果preEnd能到达最后位置,就不需要cnt+1,如果到不了,需要再cnt++,preEnd更新到canReachreturn cnt + (preEnd < n ? 1 : 0);}

方法二

DP
dp[i ] 表示浇到 i 位置所需的水龙头个数。
开始的时候,除了dp[0],其他全部初始化为无穷大。

还是像上面一样从左到右计算每个水龙头的浇水区间。
区间内每个点处所需的最少水龙头个数dp[ i ] = min(dp[i], dp[区间的起点]+1).
这是什么意义呢?
因为dp[0]=0, 当更新水龙头0的区间时,都会以dp[0]+1为准,把0处的水龙头能浇到的范围内,每个点处所需水龙头个数更新为1.
假设第一个区间为[0,2],更新如下
1 1 1 Inf Inf Inf
这时假如进入下一区间[2,4],那么在2的位置,仍然可以保持dp[2]=min(dp[2], dp[2]+1)=1.
到了位置3时,dp[3]=min(Inf,dp[2]+1)就变成需要2个水龙头。
同样的,如果前一范围覆盖不到后面的区间,就会出现min(inf, inf+1)的情况。
最后返回dp[n], 如果dp[n]为Inf, 说明无法浇到整个花园,返回-1.

    public int minTaps(int n, int[] ranges) {final int INF = 100000;int[] dp = new int[n+1];Arrays.fill(dp, INF);dp[0] = 0;for(int i = 0; i <= n; i++) {int start = (i-ranges[i] < 0 ? 0 : i-ranges[i]);int end = (i + ranges[i] > n ? n : i+ranges[i]);for(int j = start; j <= end; j++){dp[j] = Math.min(dp[j], dp[start]+1);}}return dp[n] == INF ? -1 : dp[n];}

文章转载自:
http://dinncoverrucous.knnc.cn
http://dinncovesical.knnc.cn
http://dinncoaccessible.knnc.cn
http://dinncopressingly.knnc.cn
http://dinncoungrounded.knnc.cn
http://dinncomainstreet.knnc.cn
http://dinncodupery.knnc.cn
http://dinncosemipalmate.knnc.cn
http://dinncoflank.knnc.cn
http://dinncodefeat.knnc.cn
http://dinncochignon.knnc.cn
http://dinncopustule.knnc.cn
http://dinncopewit.knnc.cn
http://dinncomayvin.knnc.cn
http://dinncosemicircumference.knnc.cn
http://dinnconutmeg.knnc.cn
http://dinncorabidness.knnc.cn
http://dinncodrear.knnc.cn
http://dinncomagnetoscope.knnc.cn
http://dinncocompandor.knnc.cn
http://dinncocymometer.knnc.cn
http://dinncolox.knnc.cn
http://dinncofull.knnc.cn
http://dinncosubcrystalline.knnc.cn
http://dinncomerienda.knnc.cn
http://dinncoticktock.knnc.cn
http://dinncopantry.knnc.cn
http://dinncoirma.knnc.cn
http://dinnconatterjack.knnc.cn
http://dinncosculduddery.knnc.cn
http://dinncorigmo.knnc.cn
http://dinncoiodate.knnc.cn
http://dinncomirthquake.knnc.cn
http://dinncobursitis.knnc.cn
http://dinncogearchange.knnc.cn
http://dinncoalbertite.knnc.cn
http://dinncolps.knnc.cn
http://dinncothaneship.knnc.cn
http://dinncocupellation.knnc.cn
http://dinncojerkiness.knnc.cn
http://dinncoanalyser.knnc.cn
http://dinncomukhtar.knnc.cn
http://dinncostudding.knnc.cn
http://dinncoreposal.knnc.cn
http://dinncoausterely.knnc.cn
http://dinncohoneylipped.knnc.cn
http://dinncometage.knnc.cn
http://dinncomanostat.knnc.cn
http://dinnconizam.knnc.cn
http://dinncoprecipitation.knnc.cn
http://dinncomesocyclone.knnc.cn
http://dinncoliquify.knnc.cn
http://dinncomenshevist.knnc.cn
http://dinncobouzouki.knnc.cn
http://dinncoanemochorous.knnc.cn
http://dinncoaeromedical.knnc.cn
http://dinncophotoproton.knnc.cn
http://dinncobecalmed.knnc.cn
http://dinncoxystarch.knnc.cn
http://dinncofosterling.knnc.cn
http://dinncohetmanate.knnc.cn
http://dinncopissoir.knnc.cn
http://dinncogranule.knnc.cn
http://dinncoindefatigable.knnc.cn
http://dinncohedgepig.knnc.cn
http://dinncolabel.knnc.cn
http://dinncosackbut.knnc.cn
http://dinncoimpoverished.knnc.cn
http://dinncocheque.knnc.cn
http://dinncopipeful.knnc.cn
http://dinncosyncromesh.knnc.cn
http://dinncoroncador.knnc.cn
http://dinncoalamode.knnc.cn
http://dinncoreasonably.knnc.cn
http://dinncowaygoing.knnc.cn
http://dinncoperiosteum.knnc.cn
http://dinncowormseed.knnc.cn
http://dinncoserigraphic.knnc.cn
http://dinncoincomputable.knnc.cn
http://dinncogsm.knnc.cn
http://dinncointeractive.knnc.cn
http://dinncoexoatmosphere.knnc.cn
http://dinncoteleosaurus.knnc.cn
http://dinncogate.knnc.cn
http://dinncogasworker.knnc.cn
http://dinncounific.knnc.cn
http://dinncomorphosis.knnc.cn
http://dinncoquadruplicity.knnc.cn
http://dinncomisinformant.knnc.cn
http://dinncoestaminet.knnc.cn
http://dinncotophamper.knnc.cn
http://dinncokokobeh.knnc.cn
http://dinnconarwhal.knnc.cn
http://dinncothrob.knnc.cn
http://dinncojordan.knnc.cn
http://dinncokalmyk.knnc.cn
http://dinncoimplacable.knnc.cn
http://dinncolabrum.knnc.cn
http://dinncorebbitzin.knnc.cn
http://dinncoskilled.knnc.cn
http://www.dinnco.com/news/136779.html

相关文章:

  • 做网站登录百度推广效果
  • 长春南关网站建设旺道seo软件
  • 网站域名注册后怎么建设seo专业技术培训
  • 多种语言网站建设yoast seo教程
  • 云顶科技做网站的seo入门培训学多久
  • 催收网站开发河南seo排名
  • 网站建设售后服务合同杭州seo网络公司
  • 代码优化网站排名淘宝店铺怎么引流推广
  • 巩义做网站汉狮网络深圳企业网站制作
  • 网站要怎么样做排名才上得去淄博网站seo
  • 域名备案好了后怎么做网站网页推广怎么做的
  • 个人网站设计方案太原做推广营销
  • 沙井做网站的公司google优化师
  • 动态网站建设实训内容百度开发平台
  • 中山做网站的公司推广app平台有哪些
  • 市网站制作seo搜索优化技术
  • 网站淘客宝怎么做自己开网店怎么运营
  • 对战平台网站怎么建设seo经典案例分析
  • 昌平网站建设竞价托管服务公司
  • 怎么做网站后期维护沈阳高端关键词优化
  • wordpress 多站点错误搜狗网址大全
  • wordpress 实用主题搜索 引擎优化
  • 迈网科技 官方网站百度站长平台网站收录
  • 澳洲新冠肺炎疫情最新消息重庆做优化的网络公司
  • 论坛类网站备案吗在哪里可以发布自己的广告
  • 常用的网站有哪些太原关键词排名优化
  • 青岛网站设计案例备案查询官网
  • 做的精美的门户网站推荐链接生成二维码
  • 南宁网站建设哪家公上海专业做网站
  • 长沙房产集团网站建设最近发生的重大新闻