国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

科普網(wǎng)站建設(shè)經(jīng)驗(yàn)襄陽網(wǎng)站seo

科普網(wǎng)站建設(shè)經(jīng)驗(yàn),襄陽網(wǎng)站seo,wordpress去掉wordpress.org,天津公司網(wǎng)站的建設(shè)灌溉花園的最少水龍頭數(shù)目【LC1326】 在 x 軸上有一個(gè)一維的花園?;▓@長度為 n,從點(diǎn) 0 開始,到點(diǎn) n 結(jié)束。 花園里總共有 n 1 個(gè)水龍頭,分別位于 [0, 1, ..., n] 。 給你一個(gè)整數(shù) n 和一個(gè)長度為 n 1 的整數(shù)數(shù)組 ranges ,其中 …

灌溉花園的最少水龍頭數(shù)目【LC1326】

在 x 軸上有一個(gè)一維的花園?;▓@長度為 n,從點(diǎn) 0 開始,到點(diǎn) n 結(jié)束。

花園里總共有 n + 1 個(gè)水龍頭,分別位于 [0, 1, ..., n] 。

給你一個(gè)整數(shù) n 和一個(gè)長度為 n + 1 的整數(shù)數(shù)組 ranges ,其中 ranges[i] (下標(biāo)從 0 開始)表示:如果打開點(diǎn) i 處的水龍頭,可以灌溉的區(qū)域?yàn)?[i - ranges[i], i + ranges[i]] 。

請你返回可以灌溉整個(gè)花園的 最少水龍頭數(shù)目 。如果花園始終存在無法灌溉到的地方,請你返回 -1 。

過了的那一刻很是震驚 也許是昨天周賽剛看的01背包,也許不大恰當(dāng),但是我做出來了

01背包
  • 思路:每個(gè)水龍頭有選或者不選兩種可能,因此轉(zhuǎn)化為01背包問題

    • 物品為每個(gè)水龍頭的灌溉范圍
    • 背包容量為灌溉范圍,表示背包能灌溉0?j0-j0?j范圍內(nèi)的花園。
    • 定義狀態(tài)dp[j]dp[j]dp[j]表示 灌溉范圍為0?j0-j0?j時(shí),所需要的最少水龍頭數(shù)目。dp[n]dp[n]dp[n]即為最終結(jié)果
    • 如果位置iii的水龍頭的灌溉范圍為[l,r]=[i?ranges[i],i+ranges[i]][l,r]=[i-ranges[i],i+ranges[i]][l,r]=[i?ranges[i],i+ranges[i]],枚舉每一個(gè)灌溉范圍小于rrr的背包,更新需要的水龍頭數(shù)目。
  • 一維動態(tài)規(guī)劃

    1. 確定dp數(shù)組(dp table)以及下標(biāo)的含義

      dp[j]dp[j]dp[j]表示 灌溉范圍為0?j0-j0?j時(shí),所需要的最少水龍頭數(shù)目。

    2. 確定遞推公式

      對于每一個(gè)位置的水龍頭,更新其能灌溉的右范圍

      • 位置i不放水龍頭:dp[j]=dp[j]dp[j] = dp[j]dp[j]=dp[j]

      • 位置i放水龍頭,該水龍頭的灌溉范圍記為[l,r][l,r][l,r]

        • 如果l≤0l\le 0l0,那么dp[j]=1dp[j]=1dp[j]=1

        • 如果l>0l\gt 0l>0,那么能否灌溉[0,j][0,j][0,j][0,l][0,l][0,l]所需要的水龍頭數(shù)目相關(guān)
          dp[j]=dp[l]+1dp[j]=dp[l]+1 dp[j]=dp[l]+1

    3. dp數(shù)組如何初始化

      當(dāng)位置0的灌溉范圍一定大于等于0,那么灌溉原點(diǎn)需要的最少水龍頭數(shù)目為1

      初始情況時(shí)其他的范圍均灌溉不到,因此初始化為任意不可能的數(shù)值,我選擇初始化為n+2n+2n+2,當(dāng)最終結(jié)果dp[n]<n+2dp[n]<n+2dp[n]<n+2時(shí),就表示可以灌溉整個(gè)花園

      dp[0]= 1;
      dp[1,n] = n + 1;
      
    4. 確定遍歷順序

      一維dp

      先遍歷物品,再從后往前遍歷背包重量,將物品i放進(jìn)能放進(jìn)的背包j中

    5. 舉例推導(dǎo)dp數(shù)組

    class Solution {public int minTaps(int n, int[] ranges) {int[] dp = new int[n + 1];Arrays.fill(dp, n + 2);dp[0] = 1;for (int i = 0; i <= n; i++){int l = i - ranges[i], r = i + ranges[i];for (int j = Math.min(r, n); j >= 0; j--){if (l <= 0){dp[j] = 1;}else{dp[j] = Math.min(dp[l] + 1, dp[j]);}}}return dp[n] < n + 2 ? dp[n] : -1;}
    }
    
    • 復(fù)雜度
      • 時(shí)間復(fù)雜度:O(n2)O(n^2)O(n2),n為數(shù)組長度
      • 空間復(fù)雜度:O(n)O(n)O(n),dp數(shù)組的額外空間
貪心
  • 思路:

    • 首先,對于所有能覆蓋某個(gè)左端點(diǎn)的水龍頭,選擇能覆蓋最遠(yuǎn)右端點(diǎn)的那個(gè)水龍頭是最優(yōu)的?!矩澬摹?/li>
    • 那么,可以先預(yù)處理rangesrangesranges數(shù)組,求出所有能覆蓋左端點(diǎn)lll的水龍頭中,右端點(diǎn)最大的那個(gè)位置,記錄在數(shù)組 rightMost[i]中。
    • 那么從原點(diǎn)出發(fā),記錄當(dāng)前所達(dá)到的右端點(diǎn)cur和下一個(gè)可以達(dá)到的位置next
      • 當(dāng)nextcur相等時(shí),無法進(jìn)行移動,返回-1
      • 否則,移動到next,步驟+1
    class Solution {public int minTaps(int n, int[] ranges) {int[] rightMost = new int[n + 1];for (int i = 0; i <= n; ++i) {int r = ranges[i];// 這樣寫可以在 i>r 時(shí)少寫一個(gè) max// 憑借這個(gè)優(yōu)化,恭喜你超越了 100% 的用戶// 說「超越」是因?yàn)樵瓉淼淖羁焓?2ms,現(xiàn)在優(yōu)化后是 1msif (i > r) rightMost[i - r] = i + r; // 對于 i-r 來說,i+r 必然是它目前的最大值else rightMost[0] = Math.max(rightMost[0], i + r);}int ans = 0;int curRight = 0; // 已建造的橋的右端點(diǎn)int nextRight = 0; // 下一座橋的右端點(diǎn)的最大值for (int i = 0; i < n; ++i) { // 注意這里沒有遍歷到 n,因?yàn)樗呀?jīng)是終點(diǎn)了nextRight = Math.max(nextRight, rightMost[i]);if (i == curRight) { // 到達(dá)已建造的橋的右端點(diǎn)if (i == nextRight) return -1; // 無論怎么造橋,都無法從 i 到 i+1curRight = nextRight; // 造一座橋++ans;}}return ans;}
    }作者:靈茶山艾府
    鏈接:https://leetcode.cn/problems/minimum-number-of-taps-to-open-to-water-a-garden/solutions/2123855/yi-zhang-tu-miao-dong-pythonjavacgo-by-e-wqry/
    來源:力扣(LeetCode)
    著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
    
    • 復(fù)雜度

      • 時(shí)間復(fù)雜度:O(n)O(n)O(n),n為數(shù)組長度

      • 空間復(fù)雜度:O(n)O(n)O(n)rightMost數(shù)組的額外空間

http://m.aloenet.com.cn/news/1550.html

相關(guān)文章:

  • 長春火車站咨詢電話企業(yè)如何做好網(wǎng)絡(luò)營銷
  • 北京做兼職網(wǎng)站比較開放的瀏覽器
  • 網(wǎng)站能否做二維碼如何建網(wǎng)站
  • 做的網(wǎng)站怎樣百度能搜到廣告推廣渠道有哪些
  • 寧波自適應(yīng)網(wǎng)站建設(shè)優(yōu)化建站網(wǎng)絡(luò)推廣公司電話
  • 鋁木門窗網(wǎng)站建設(shè)地推拉新app推廣接單平臺
  • 上海自助建站工具杭州seo關(guān)鍵字優(yōu)化
  • 建材網(wǎng)站做環(huán)保類型思路醫(yī)療網(wǎng)站優(yōu)化公司
  • 事業(yè)單位網(wǎng)站建設(shè)工作方案sem百度競價(jià)推廣
  • 秦皇島網(wǎng)站制作多少錢大興今日頭條新聞
  • github wordpress主題seo關(guān)鍵詞優(yōu)化軟件手機(jī)
  • 安陽網(wǎng)站制作杭州網(wǎng)站seo價(jià)格
  • 網(wǎng)站預(yù)付款怎么做會計(jì)分錄產(chǎn)品推廣找哪家公司
  • 咸陽市建設(shè)工程信息網(wǎng)芭嘞seo
  • 個(gè)人網(wǎng)站做接口可以么網(wǎng)時(shí)代教育培訓(xùn)機(jī)構(gòu)怎么樣
  • 豬八戒網(wǎng)站做私活賺錢嗎18款禁用軟件黃app免費(fèi)
  • 源碼分享百度seo排名優(yōu)化是什么
  • 東營網(wǎng)站建設(shè)規(guī)劃書百度網(wǎng)址大全下載安裝
  • 南城網(wǎng)站建設(shè)公司信息seo優(yōu)化sem推廣
  • 合肥高端品牌網(wǎng)站建設(shè)廣州網(wǎng)站優(yōu)化公司
  • 政府網(wǎng)站建設(shè)依賴什么平臺打廣告比較好免費(fèi)的
  • 網(wǎng)站建設(shè)規(guī)劃書范文5000字紹興seo排名
  • 平頂山哪里有做網(wǎng)站的公司產(chǎn)品軟文范例大全
  • 家具網(wǎng)站建設(shè)規(guī)劃書廣告發(fā)布平臺app
  • 成都便宜網(wǎng)站建設(shè)西安網(wǎng)站制作建設(shè)
  • 網(wǎng)站內(nèi)頁產(chǎn)品做跳轉(zhuǎn)推廣形式
  • 宣城有做網(wǎng)站的公司嗎google chrome 網(wǎng)絡(luò)瀏覽器
  • 網(wǎng)站建設(shè)一般要提供什么內(nèi)容代寫軟文公司
  • 紅色大氣網(wǎng)站怎么樣建一個(gè)網(wǎng)站
  • 數(shù)字營銷包括哪些方面優(yōu)化設(shè)計(jì)全部答案