摘要:一題目盛最多水的容器給定個(gè)非負(fù)整數(shù),,,,每個(gè)數(shù)代表坐標(biāo)中的一個(gè)點(diǎn)。在坐標(biāo)內(nèi)畫(huà)條垂直線(xiàn),垂直線(xiàn)的兩個(gè)端點(diǎn)分別為和。找出其中的兩條線(xiàn),使得它們與軸共同構(gòu)成的容器可以容納最多的水。在此情況下,容器能夠容納水表示為藍(lán)色部分的最大值為。
一、題目
盛最多水的容器:
給定 n 個(gè)非負(fù)整數(shù) a1,a2,...,an,每個(gè)數(shù)代表坐標(biāo)中的一個(gè)點(diǎn)?(i,?ai) 。在坐標(biāo)內(nèi)畫(huà) n 條垂直線(xiàn),垂直線(xiàn) i?的兩個(gè)端點(diǎn)分別為?(i,?ai) 和 (i, 0)。找出其中的兩條線(xiàn),使得它們與?x?軸共同構(gòu)成的容器可以容納最多的水。說(shuō)明:你不能傾斜容器,且?n?的值至少為 2。
圖中垂直線(xiàn)代表輸入數(shù)組 [1,8,6,2,5,4,8,3,7]。在此情況下,容器能夠容納水(表示為藍(lán)色部分)的最大值為 49。二、我的答案
???????首先分析一下題目,與接雨水那道題不同的是,本題所求為“找出其中的兩條線(xiàn),使得它們與?x?軸共同構(gòu)成的容器可以容納最多的水”, 也就是說(shuō)[6,7,6]這樣的數(shù)組,最多接水的兩條線(xiàn)的下標(biāo)為0和2。同時(shí)也可以看出這道題與最大值無(wú)關(guān),計(jì)算公式應(yīng)該是Math.min(height[head], height[tail]) * (tail - head),head和tail都出來(lái),雙指針不要太明顯
???????因?yàn)槊看谓铀娣e的高是兩個(gè)指針中指向的值較小的那個(gè),所以為了求最大值,我們每次向中間移動(dòng)的指針也應(yīng)該是辣一個(gè),思路理清,代碼如下
/** * @param {number[]} height * @return {number} */ var maxArea = function(height) { let tail = height.length - 1, head = 0; let container = 0, temp; while(head < tail) { temp = (tail - head) * Math.min(height[head], height[tail]) container < temp ? container = temp : null if(height[head] < height[tail]) { head++ } else { tail-- } } return container };
???????
三、優(yōu)秀答案/** * @param {number[]} height * @return {number} */ var maxArea = function(height) { let i = 0; let j = height.length - 1; let max = 0 while(iheight[j]) { j-- } else { i++ } } return max };
???????取最大值使用max = Math.max((j - i) * min), max)還是非常秀的
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/105784.html
摘要:我們需要找出這些線(xiàn)所圍成的容器,能裝最多水的水量。這道題是不能用蠻力法解決的,會(huì)超時(shí)。這個(gè)解法想法是這樣的,我們用兩個(gè)變量,指向數(shù)組的起始元素和末尾元素。首先計(jì)算這兩條線(xiàn)所圍成的容器面積,然后移動(dòng)指向較短的線(xiàn)段的指針。 題目詳情 Given n non-negative integers a1, a2, ..., an, where each represents a point at...
摘要:盛最多水的容器給定個(gè)非負(fù)整數(shù),,,,每個(gè)數(shù)代表坐標(biāo)中的一個(gè)點(diǎn)。在坐標(biāo)內(nèi)畫(huà)條垂直線(xiàn),垂直線(xiàn)的兩個(gè)端點(diǎn)分別為和。找出其中的兩條線(xiàn),使得它們與軸共同構(gòu)成的容器可以容納最多的水。在此情況下,容器能夠容納水表示為藍(lán)色部分的最大值為。 LeetCode11.盛最多水的容器 JavaScript 給定 n 個(gè)非負(fù)整數(shù)a1,a2,...,an,每個(gè)數(shù)代表坐標(biāo)中的一個(gè)點(diǎn) (i, ai) 。在坐標(biāo)內(nèi)畫(huà) n...
摘要:題目要求給一個(gè)數(shù)組,其中數(shù)組在下標(biāo)處的值為,坐標(biāo)和坐標(biāo)構(gòu)成一條垂直于坐標(biāo)軸的直線(xiàn)。現(xiàn)任取兩條垂線(xiàn)和軸組成四邊形容器。當(dāng)左右指針相遇時(shí),指針假設(shè)該算法并沒(méi)有遍歷到容量最大的情況我們令容量最大時(shí)的指針為和。 題目要求:給一個(gè)數(shù)組,其中數(shù)組在下標(biāo)i處的值為A[i],坐標(biāo)(i,A[i])和坐標(biāo)(i,0)構(gòu)成一條垂直于坐標(biāo)軸x的直線(xiàn)?,F(xiàn)任取兩條垂線(xiàn)和x軸組成四邊形容器。問(wèn)其中盛水量最大為多少? ...
摘要:一題目描述空格分隔,逐個(gè)反轉(zhuǎn)二題目描述三題目描述當(dāng)然也可以用的做,不過(guò)用雙指針更快。 LeetCode: 557. Reverse Words in a String III 一、LeetCode: 557. Reverse Words in a String III 題目描述 Given a string, you need to reverse the order of chara...
摘要:分布式的管理和當(dāng)我在談?wù)摷軜?gòu)時(shí)我在談啥狀態(tài)碼詳解無(wú)狀態(tài)協(xié)議和請(qǐng)求支持哪些方法分層協(xié)議棧有哪些數(shù)據(jù)結(jié)構(gòu)運(yùn)用場(chǎng)景說(shuō)說(shuō)你常用的命令為什么要有包裝類(lèi)面向?qū)ο蟮奶卣魇巧妒巧队惺裁春锰幭到y(tǒng)設(shè)計(jì)工程在線(xiàn)診斷系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)索引背后的數(shù)據(jù)結(jié)構(gòu)及算法原理軟技能 HTTP 【HTTP】分布式session的管理 【HTTP】Cookie和Session 【HTTP】當(dāng)我在談?wù)揜estFul架構(gòu)時(shí)我在談啥?...
閱讀 2378·2021-11-18 10:07
閱讀 2335·2021-09-22 15:59
閱讀 3089·2021-08-23 09:42
閱讀 2293·2019-08-30 15:44
閱讀 1204·2019-08-29 15:06
閱讀 2330·2019-08-29 13:27
閱讀 1225·2019-08-29 13:21
閱讀 1428·2019-08-29 13:13