自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用「單調(diào)?!菇鉀Q“攢青豆”這類現(xiàn)實(shí)生活問(wèn)題

開發(fā) 前端
現(xiàn)有 n 個(gè)寬度為 1 的柱子,給出 n 個(gè)非負(fù)整數(shù)依次表示柱子的高度,排列后如下圖所示,此時(shí)均勻從上空向下撒青豆,計(jì)算按此排列的柱子能接住多少青豆。(不考慮邊角堆積)。

問(wèn)題描述

攢青豆

現(xiàn)有 n 個(gè)寬度為 1 的柱子,給出 n 個(gè)非負(fù)整數(shù)依次表示柱子的高度,排列后如下圖所示,此時(shí)均勻從上空向下撒青豆,計(jì)算按此排列的柱子能接住多少青豆。(不考慮邊角堆積)

圖片

輸入格式

輸入每根柱子高度的數(shù)組

輸出格式

輸出一個(gè)整數(shù),表示最大能接住多少青豆

輸入樣例:

[5,0,2,1,4,0,1,0,3]

輸出樣例:

17

解題思路

通過(guò)單調(diào)棧找到每根柱子左邊第一個(gè)比它高的位置,把兩根柱子之間的青豆數(shù)累加起來(lái),棧內(nèi)元素是成遞減的順序保存的。

  1. 首先比較當(dāng)前棧頂元素是否小于當(dāng)前柱子高度,如果小于棧頂就繼續(xù)入棧,否則就要找到把棧彈出到第一個(gè)比當(dāng)前柱子高的位置,棧內(nèi)元素存的數(shù)組下標(biāo)位置,所以可以通過(guò)當(dāng)前下標(biāo)值與之前的值相減得到寬度差
  2. 使用Last變量記錄上一個(gè)彈出棧頂?shù)脑?strong>高度,因?yàn)榭梢杂?jì)算兩個(gè)柱子之間的高度差,每次彈出柱子都要更新一次Last
  3. 最后判斷棧是否為空,不空的話需要加上左邊柱子比當(dāng)前柱子高的之間大小

相關(guān)代碼

import java.util.*;
public class Main{
public static void main(String[] args){
int[] height = new int[]{5,0,2,1,4,0,1,0,3};
System.out.println(qingdou(height));
}
static int qingdou(int[] w){
Stack<Integer> stack = new Stack<>();
int res = 0;
//單調(diào)棧
for(int i = 0; i < w.length; i++){
int last = 0; //上一個(gè)棧頂元素
while(!stack.empty() && w[stack.peek()] <= w[i]){
res += (w[stack.peek()] - last) * (i - stack.peek() - 1);
last = w[stack.peek()];
stack.pop();
}
if(!stack.empty()) {
res += (w[i] - last) * (i - stack.peek() - 1);
}
stack.push(i);
}
return res;
}
}

運(yùn)行效果

圖片

在線運(yùn)行

訪問(wèn)下方鏈接可以直接在線運(yùn)行:https://1024code.com/codecubes/KzFluKB

總結(jié)

今天主要分享了對(duì)攢青豆的題目理解,有錯(cuò)誤的地方歡迎大家指出,共同進(jìn)步??!

本文轉(zhuǎn)載自微信公眾號(hào)「 程序員升級(jí)打怪之旅」,作者「王中陽(yáng)Go」,可以通過(guò)以下二維碼關(guān)注。

轉(zhuǎn)載本文請(qǐng)聯(lián)系「 程序員升級(jí)打怪之旅」公眾號(hào)。

責(zé)任編輯:武曉燕 來(lái)源: 程序員升職加薪之旅
相關(guān)推薦

2022-06-05 23:59:31

加密貨幣區(qū)塊鏈比特幣

2019-05-14 13:14:24

智慧社區(qū)智能服務(wù)智能家居

2018-09-11 14:40:07

物聯(lián)網(wǎng)應(yīng)用物聯(lián)網(wǎng)IOT

2023-03-30 08:10:31

Vue.js轉(zhuǎn)換和微交互

2023-08-24 08:37:50

VueCSS

2015-09-21 09:20:55

2020-06-04 08:06:12

物聯(lián)網(wǎng)應(yīng)用物聯(lián)網(wǎng)IOT

2017-12-28 09:22:24

機(jī)器學(xué)習(xí)應(yīng)用生活

2015-01-05 09:53:05

Java

2024-05-09 12:52:12

大數(shù)據(jù)

2022-08-14 14:46:58

元宇宙Web3.0虛擬宇宙

2022-06-16 15:12:02

元宇宙房產(chǎn)虛構(gòu)世界

2023-08-09 09:30:10

數(shù)組結(jié)構(gòu)left )

2010-12-01 23:26:12

微軟創(chuàng)新杯

2022-11-03 15:22:15

數(shù)據(jù)結(jié)構(gòu)Python

2017-03-01 10:04:16

2018-04-08 09:07:58

2012-05-08 16:21:26

智能手機(jī)

2022-01-14 11:48:39

量子計(jì)算硬件技術(shù)

2023-05-29 07:31:35

單調(diào)棧數(shù)組循環(huán)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)