中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

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

網(wǎng)站服務(wù)搭建開魯網(wǎng)站seo

網(wǎng)站服務(wù)搭建,開魯網(wǎng)站seo,簡(jiǎn)述常用的網(wǎng)絡(luò)營(yíng)銷方法,微信網(wǎng)站建設(shè)電話文章目錄 Day59 下一個(gè)更大元素II題目思路代碼 接雨水題目思路代碼 Day59 下一個(gè)更大元素II 503. 下一個(gè)更大元素 II - 力扣(LeetCode) 題目 給定一個(gè)循環(huán)數(shù)組(最后一個(gè)元素的下一個(gè)元素是數(shù)組的第一個(gè)元素),輸出每…

文章目錄

  • Day59
    • 下一個(gè)更大元素II
      • 題目
      • 思路
      • 代碼
    • 接雨水
      • 題目
      • 思路
      • 代碼

Day59

下一個(gè)更大元素II

503. 下一個(gè)更大元素 II - 力扣(LeetCode)

題目

給定一個(gè)循環(huán)數(shù)組(最后一個(gè)元素的下一個(gè)元素是數(shù)組的第一個(gè)元素),輸出每個(gè)元素的下一個(gè)更大元素。數(shù)字 x 的下一個(gè)更大的元素是按數(shù)組遍歷順序,這個(gè)數(shù)字之后的第一個(gè)比它更大的數(shù),這意味著你應(yīng)該循環(huán)地搜索它的下一個(gè)更大的數(shù)。如果不存在,則輸出 -1。

示例 1:

  • 輸入: [1,2,1]
  • 輸出: [2,-1,2]
  • 解釋: 第一個(gè) 1 的下一個(gè)更大的數(shù)是 2;數(shù)字 2 找不到下一個(gè)更大的數(shù);第二個(gè) 1 的下一個(gè)最大的數(shù)需要循環(huán)搜索,結(jié)果也是 2。

提示:

  • 1 <= nums.length <= 10^4
  • -10^9 <= nums[i] <= 10^9

思路

本題要循環(huán)數(shù)組

查找元素右邊最大值,使用單調(diào)遞增棧(從??诘綏5?#xff09;

代碼

class Solution {public int[] nextGreaterElements(int[] nums) {int len = nums.length;int res[] = new int[len];Arrays.fill(res, -1);LinkedList<Integer> stack = new LinkedList<>();stack.push(0);for(int i = 1; i < len * 2; i++){if(nums[stack.peek() % len] > nums[i % len]) stack.push(i);else if(nums[stack.peek() % len] == nums[i % len]) stack.push(i);else {while(!stack.isEmpty() && nums[stack.peek() % len] < nums[i % len]){res[stack.peek() % len] = nums[i % len];stack.pop();}stack.push(i);}}return res;}
}

接雨水

42. 接雨水 - 力扣(LeetCode)

題目

給定 n 個(gè)非負(fù)整數(shù)表示每個(gè)寬度為 1 的柱子的高度圖,計(jì)算按此排列的柱子,下雨之后能接多少雨水。

示例 1:

  • 輸入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
  • 輸出:6
  • 解釋:上面是由數(shù)組 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度圖,在這種情況下,可以接 6 個(gè)單位的雨水(藍(lán)色部分表示雨水)。

示例 2:

  • 輸入:height = [4,2,0,3,2,5]
  • 輸出:9

思路

只寫了單調(diào)棧,其他方法(雙指針,動(dòng)態(tài)規(guī)劃)看

代碼隨想錄 (programmercarl.com)

準(zhǔn)備工作

那么本題使用單調(diào)棧有如下幾個(gè)問題:

  • 首先單調(diào)棧是按照行方向來計(jì)算雨水
  • 使用單調(diào)棧內(nèi)元素的順序

從棧頭(元素從棧頭彈出)到棧底的順序應(yīng)該是從小到大的順序。

因?yàn)橐坏┌l(fā)現(xiàn)添加的柱子高度大于棧頭元素了,此時(shí)就出現(xiàn)凹槽了,棧頭元素就是凹槽底部的柱子,棧頭第二個(gè)元素就是凹槽左邊的柱子,而添加的元素就是凹槽右邊的柱子。

  • 遇到相同高度的柱子怎么辦。

遇到相同的元素,更新棧內(nèi)下標(biāo),就是將棧里元素(舊下標(biāo))彈出,將新元素(新下標(biāo))加入棧中。

因?yàn)槲覀円髮挾鹊臅r(shí)候 如果遇到相同高度的柱子,需要使用最右邊的柱子來計(jì)算寬度。

  • 棧里要保存什么數(shù)值

使用單調(diào)棧,也是通過 長(zhǎng) * 寬 來計(jì)算雨水面積的。

長(zhǎng)就是通過柱子的高度來計(jì)算,寬是通過柱子之間的下標(biāo)來計(jì)算,

那么棧里有沒有必要存一個(gè)pair<int, int>類型的元素,保存柱子的高度和下標(biāo)呢。

其實(shí)不用,棧里就存放下標(biāo)就行,想要知道對(duì)應(yīng)的高度,通過height[stack.top()] 就知道彈出的下標(biāo)對(duì)應(yīng)的高度了。

單調(diào)棧處理邏輯

以下邏輯主要就是三種情況

  • 情況一:當(dāng)前遍歷的元素(柱子)高度小于棧頂元素的高度 height[i] < height[st.top()]
    • 如果當(dāng)前遍歷的元素(柱子)高度小于棧頂元素的高度,就把這個(gè)元素加入棧中,因?yàn)闂@锉緛砭鸵3謴男〉酱蟮捻樞?#xff08;從棧頭到棧底)。
if(height[i] < height[stack.peek()]) stack.push(i)
  • 情況二:當(dāng)前遍歷的元素(柱子)高度等于棧頂元素的高度 height[i] == height[st.top()]
    • 如果當(dāng)前遍歷的元素(柱子)高度等于棧頂元素的高度,要跟更新棧頂元素,因?yàn)橛龅较嘞嗤叨鹊闹?#xff0c;需要使用最右邊的柱子來計(jì)算寬度。
if(height[i] == height[stack.peek()]){stack.pop();stack.push(i);
}
  • 情況三:當(dāng)前遍歷的元素(柱子)高度大于棧頂元素的高度 height[i] > height[st.top()]
    • 如果當(dāng)前遍歷的元素(柱子)高度大于棧頂元素的高度,此時(shí)就出現(xiàn)凹槽了

那么雨水高度是 min(凹槽左邊高度, 凹槽右邊高度) - 凹槽底部高度,代碼為:int h = min(height[st.top()], height[i]) - height[mid];

雨水的寬度是 凹槽右邊的下標(biāo) - 凹槽左邊的下標(biāo) - 1(因?yàn)橹磺笾虚g寬度),代碼為:int w = i - st.top() - 1 ;

當(dāng)前凹槽雨水的體積就是:h * w

while(!stack.isEmpty() && height[i] > height[stack.peek()]){int mid = stack.peek();stack.pop();if(!stack.isEmpty()){int h = Math.min(height[stack.peek()], height[i]) - height[mid];int w = i - stack.peek() - 1; // 注意減一,只求中間寬度sum += w * h;}
}
stack.push(i);

代碼

class Solution {public int trap(int[] height) {if (height.length <= 2) return 0;int sum = 0;LinkedList<Integer> stack = new LinkedList<>();stack.push(0);for(int i = 1; i < height.length; i++){if(height[i] < height[stack.peek()]){stack.push(i);}else if(height[i] == height[stack.peek()]){stack.pop();stack.push(i);}else {while(!stack.isEmpty() && height[i] > height[stack.peek()]){int mid = stack.peek();stack.pop();if(!stack.isEmpty()){int h = Math.min(height[stack.peek()], height[i]) - height[mid];int w = i - stack.peek() - 1; // 注意減一,只求中間寬度sum += w * h;}}stack.push(i);}}return sum;}
}
http://www.risenshineclean.com/news/48257.html

相關(guān)文章:

  • 濟(jì)南網(wǎng)站建設(shè)優(yōu)化精準(zhǔn)客源app
  • 站群管理軟件百度軟件中心官網(wǎng)
  • 中企動(dòng)力做的網(wǎng)站被百度屏蔽seo第三方點(diǎn)擊軟件
  • 網(wǎng)站建設(shè)應(yīng)注重實(shí)用性湖北百度推廣電話
  • 男子做淫穢網(wǎng)站圖片seo優(yōu)化廠商
  • 網(wǎng)站建設(shè)管理報(bào)告免費(fèi)制作網(wǎng)站
  • 給關(guān)亨做網(wǎng)站的設(shè)計(jì)公司深圳關(guān)鍵詞推廣整站優(yōu)化
  • 視覺做的比較好的國(guó)外網(wǎng)站北京seo排名服務(wù)
  • 百度推廣電話客服湖南靠譜的關(guān)鍵詞優(yōu)化哪家好
  • 網(wǎng)站制作哪個(gè)軟件網(wǎng)站查詢域名
  • 深圳企業(yè)公司做網(wǎng)站手機(jī)優(yōu)化大師下載
  • 權(quán)重域名做網(wǎng)站有用么培訓(xùn)機(jī)構(gòu)是干什么的
  • 企業(yè)網(wǎng)絡(luò)營(yíng)銷實(shí)施方案seo優(yōu)化前景
  • 有什么免費(fèi)的wordpresswindows優(yōu)化大師是系統(tǒng)軟件嗎
  • 有什么網(wǎng)站可以接設(shè)計(jì)做網(wǎng)站運(yùn)營(yíng)需要多少錢
  • 怎樣做網(wǎng)站的鏈接百度競(jìng)價(jià)優(yōu)缺點(diǎn)
  • 企業(yè)的所得稅費(fèi)用怎么算沈陽(yáng)關(guān)鍵字優(yōu)化公司
  • 學(xué)校網(wǎng)站建設(shè)計(jì)劃湖南專業(yè)關(guān)鍵詞優(yōu)化服務(wù)水平
  • 建設(shè)購(gòu)物網(wǎng)站的條件百度競(jìng)價(jià)推廣代運(yùn)營(yíng)公司
  • 網(wǎng)頁(yè)設(shè)置如何優(yōu)化百度seo排名
  • 溫州做網(wǎng)站掌熊號(hào)seo網(wǎng)站查詢
  • 丹陽(yáng)做公司網(wǎng)站sem優(yōu)化師
  • 常州網(wǎng)站設(shè)計(jì)湛江公司電話網(wǎng)絡(luò)營(yíng)銷推廣的基本手段
  • 辦公門戶網(wǎng)站模板簡(jiǎn)單的網(wǎng)頁(yè)設(shè)計(jì)
  • 家庭網(wǎng)絡(luò)做網(wǎng)站站長(zhǎng)工具seo綜合查詢廣告
  • 蘭州優(yōu)化網(wǎng)站媒體資源網(wǎng)
  • 深圳裝修公司網(wǎng)站熱點(diǎn)新聞事件素材
  • 贛州網(wǎng)站建設(shè)聯(lián)系方式寧德市地圖
  • 游戲抽獎(jiǎng)網(wǎng)站用java怎么做北京朝陽(yáng)區(qū)
  • 搭建網(wǎng)站程序網(wǎng)站點(diǎn)擊量與排名