1326. 灌溉花園的最少水龍頭數(shù)目

在 x 軸上有一個一維的花園∥嫫耄花園長度為 n蛮放,從點 0 開始,到點 n 結(jié)束奠宜。
花園里總共有 n + 1 個水龍頭包颁,分別位于 [0, 1, ..., n] 。
給你一個整數(shù) n 和一個長度為 n + 1 的整數(shù)數(shù)組 ranges 挎塌,其中 ranges[i] (下標(biāo)從 0 開始)表示:如果打開點 i 處的水龍頭徘六,可以灌溉的區(qū)域為 [i - ranges[i], i + ranges[i]] 。
請你返回可以灌溉整個花園的 最少水龍頭數(shù)目 榴都。如果花園始終存在無法灌溉到的地方待锈,請你返回 -1 。

示例 1:
輸入:n = 5, ranges = [3,4,1,1,0,0]
輸出:1
解釋:
點 0 處的水龍頭可以灌溉區(qū)間 [-3,3]
點 1 處的水龍頭可以灌溉區(qū)間 [-3,5]
點 2 處的水龍頭可以灌溉區(qū)間 [1,3]
點 3 處的水龍頭可以灌溉區(qū)間 [2,4]
點 4 處的水龍頭可以灌溉區(qū)間 [4,4]
點 5 處的水龍頭可以灌溉區(qū)間 [5,5]
只需要打開點 1 處的水龍頭即可灌溉整個花園 [0,5] 嘴高。

示例 2:
輸入:n = 3, ranges = [0,0,0,0]
輸出:-1
解釋:即使打開所有水龍頭竿音,你也無法灌溉整個花園。

示例 3:
輸入:n = 7, ranges = [1,2,1,0,2,1,0,1]
輸出:3

示例 4:
輸入:n = 8, ranges = [4,0,0,0,0,0,0,0,4]
輸出:2

示例 5:
輸入:n = 8, ranges = [4,0,0,0,4,0,0,0,4]
輸出:1

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

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/minimum-number-of-taps-to-open-to-water-a-garden
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有拴驮。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán)春瞬,非商業(yè)轉(zhuǎn)載請注明出處。

解題:解題方法來自leetcode大佬套啤,自己想的方法并未實現(xiàn)所有的ac宽气。
貪心:
在區(qū)間[0,n]中,有n+1個曉得區(qū)間段潜沦,需要從中選擇盡量少的區(qū)間段來可以覆蓋住整個區(qū)間萄涯。區(qū)間該如何選擇,什么樣的區(qū)間改舍棄掉唆鸡,首先必須選擇可以到達終點的區(qū)間涝影,但是這樣的節(jié)點可能會有很多個,那么我們肯定是祖安澤最長的那個争占。按照這樣的思路燃逻,選擇下面的序目。

  public int minTaps(int n, int[] ranges) {
        public int minTaps(int n, int[] ranges) {
          int[] dp = new int[n+1];
          int count=0;
          int point=0;//標(biāo)記下一個開始端點
          int tem=0;
          int maxr=0;//最大右端點
          for(int i =0;i<ranges.length;i++){//j將區(qū)間表示出來dp[i]表示從i能到達的最遠的距離
               tem=dp[Math.max(0,i-ranges[i])];
              dp[Math.max(0,i-ranges[i])]=Math.max(tem,Math.min(n,i+ranges[i]));
          }
         for(int i=0;i<n;i++){
             maxtr=Math.max(maxr,dp[i]);//找出最大右端點
             if(i==point){//遍歷到最大右端點為起點為止,更新完下一個最大右端點伯襟,計數(shù)加一
                 if(i>=maxr){
                     return -1;
                 }
                count++;
                point=maxr;
             }
         }
          return count;
        }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末猿涨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子姆怪,更是在濱河造成了極大的恐慌嘿辟,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件片效,死亡現(xiàn)場離奇詭異,居然都是意外死亡英古,警方通過查閱死者的電腦和手機淀衣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來召调,“玉大人膨桥,你說我怎么就攤上這事∵肱眩” “怎么了只嚣?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長艺沼。 經(jīng)常有香客問我册舞,道長,這世上最難降的妖魔是什么障般? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任调鲸,我火速辦了婚禮,結(jié)果婚禮上挽荡,老公的妹妹穿的比我還像新娘藐石。我一直安慰自己,他們只是感情好定拟,可當(dāng)我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布于微。 她就那樣靜靜地躺著,像睡著了一般青自。 火紅的嫁衣襯著肌膚如雪株依。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天性穿,我揣著相機與錄音勺三,去河邊找鬼。 笑死需曾,一個胖子當(dāng)著我的面吹牛吗坚,可吹牛的內(nèi)容都是我干的祈远。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼商源,長吁一口氣:“原來是場噩夢啊……” “哼车份!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起牡彻,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤扫沼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后庄吼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缎除,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年总寻,在試婚紗的時候發(fā)現(xiàn)自己被綠了器罐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡渐行,死狀恐怖轰坊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情祟印,我是刑警寧澤肴沫,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站蕴忆,受9級特大地震影響颤芬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜孽文,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一驻襟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧芋哭,春花似錦沉衣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拔疚,卻和暖如春肥隆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背稚失。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工栋艳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人句各。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓吸占,卻偏偏與公主長得像晴叨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子矾屯,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,339評論 0 2
  • 方法1 (數(shù)據(jù)類型)(最小值+Math.random()*(最大值-最小值+1)) 例: (int)(1+Math...
    GB_speak閱讀 40,975評論 2 6
  • thiele插值算法 1點插值算法 function [C,c]=thiele(X,Y,Z)%X為插值點橫坐標(biāo)兼蕊,Y...
    00crazy00閱讀 1,978評論 0 4
  • 個人學(xué)習(xí)批處理的初衷來源于實際工作;在某個迭代版本有個BS(安卓手游模擬器)大需求件蚕,從而在測試過程中就重復(fù)涉及到...
    Luckykailiu閱讀 4,706評論 0 11
  • @ #管理觀 #要點 作者:彭劍鋒 (1)生態(tài)布局排作,網(wǎng)狀結(jié)構(gòu)牵啦。企業(yè)必須要有生態(tài)的戰(zhàn)略布局,沒有生態(tài)的概念妄痪、生態(tài)的戰(zhàn)...
    Lee公子閱讀 369評論 0 0