lintcode刷題——裝最多水的容器
給定 n 個非負整數 a1, a2,
..., an, 每個數代表了座標中的一個點 (i,
ai)
。畫 n 條垂直線,使得 i 垂直線的兩個端點分別為(i,
ai)
和(i, 0)
。找到兩條線,使得其與 x 軸共同構成一個容器,以容納最多水。
注意事項
容器不可傾斜。
您在真實的面試中是否遇到過這個題? Yes 樣例給出[1,3,2]
, 最大的儲水面積是2
.
1、首先想到的最笨的辦法就是雙重迴圈,出水面積就是兩個點中的ai較小的值乘以兩個點的下標的差值;
2、雙重迴圈顯然時間複雜度太高,這時想到用兩個指標一頭一尾向中間靠攏,若依舊使用兩個for迴圈來做時間複雜度依舊不滿足條件;
3、考慮用一個while迴圈,加上一個判斷條件,就是裝水的多少受限於短的一條線,於是加上判斷,保留兩者之中較長的一條線。
具體C++程式碼如下所示:
class Solution {
public:
/*
* @param : a vector of integers
* @return: an integer
*/
int maxArea(vector<int> heights) {
// write your code here
int l=heights.size();
if(l==0||l==1)
return 0;
int watermax=0;
int i=0,j=l-1;
/* for(i=0;i<l;i++)
{
int lheight=heights[i];
int li=i;
for(j=l-1;j>i;j--)
{
watermax=max(min(lheight,heights[j])*(j-i),watermax);
}
}*/註釋部分為兩個for迴圈程式碼,時間超過限制
while(i<j)
{
watermax=max(min(heights[i],heights[j])*(j-i),watermax);
if(heights[i]<heights[j])
{
i++;
}
else
{
j--;
}
}
return watermax;
}
};
相關推薦
lintcode刷題——裝最多水的容器
lintcode刷題之裝最多水的容器,原題如下所示: 給定 n 個非負整數 a1, a2, ..., an, 每個數代表了座標中的一個點 (i, ai)。畫 n 條垂直線,使得 i 垂直線的兩個端點分別為(i, ai)和(i, 0)。找到兩條線,使得其與 x 軸共同
LeetCode 11. Container With Most Water (裝最多水的容器)
cheng 個數 參考 找到 資料 算法題目 pointer etc html Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, a
[LeetCode] 11. Container With Most Water 裝最多水的容器
OS python oge containe 較高的 contains tco water IT Given n non-negative integers a1, a2, ..., an, where each represents a point at coordina
leetcode11 裝最多水的容器(要學會簡化問題)
AR nbsp where represent ++ with ner 一個 oge 簡化問題後的代碼 /* 原問題: Given n non-negative integers a1, a2, ..., an, where each repres
【LeetCode】#11裝最多水的容器(Container With Most Water)
【LeetCode】#11裝最多水的容器(Container With Most Water) 題目描述 給定 n 個非負整數 a1,a2,…,an,每個數代表座標中的一個點 (i, ai) 。在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0)。
[LeetCode] Container With Most Water 裝最多水的容器
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoint
11. Container With Most Water(求能裝最多水的容器)
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that t
裝最多水的容器
題目描述:給定 n 個非負整數 a1, a2, ..., an, 每個數代表了座標中的一個點 (i, ai)。畫 n 條垂直線,使得 i 垂直線的兩個端點分別為(i, ai)和(i, 0)。找到兩條線
22.Container With Most Water(能裝最多水的容器)
圖片 int HERE ted 什麽 坐標 image pre ins Level: ??Medium 題目描述: Given n non-negative integers a1, a2, ..., an , where each represents a point a
動態規劃演算法——裝最多水的容器
動態規劃概述 動態規劃(Dynamic Programming,DP)是運籌學的一個分支,是求解決策過程最優化的過程。 動態規劃演算法通常用於求解具有某種最優性質的問題。在這類問題中,可能會有許多可行解,每一個解都對應於一個值,我們希望找到具有最優值的解。 動態規劃演算法與分治法類似,其基本思想也
LeetCode刷題筆記(十一)盛最多水的容器
題目:給定 n 個非負整數 a1,a2,...,an,每個數代表座標中的一個點 (i, ai) 。畫 n 條垂直線,使得垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0)。找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。注意:你不能傾斜容器,n
leetcode刷題11. 盛最多水的容器
mission .com max ons nbsp lee bmi miss 面積 做題連接https://leetcode-cn.com/problems/container-with-most-water/submissions/本題分為兩種方法:暴力法: int ma
11. Container With Most Water 裝水最多的容器
異常 style http 指針 param post aps wid lose [抄題]: Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate
【LeetCode 中等題】6-盛最多水的容器
宣告: 今天是中等題第6道題。給定 n 個非負整數 a1,a2,...,an,每個數代表座標中的一個點 (i, ai) 。在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 (i,
leetcode第11題:盛水最多的容器
給定 n 個非負整數 a1,a2,...,an,每個數代表座標中的一個點 (i, ai) 。在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0)。找出其中的兩條線,
LeetCode題庫11:盛最多水的容器——JavaScript解答
題目描述: 給定 n 個非負整數 a1,a2,…,an,每個數代表座標中的一個點 (i, ai) 。在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0)。找出其中的
leetcode題庫——盛最多水的容器
題目描述: 給定 n 個非負整數 a1,a2,...,an,每個數代表座標中的一個點 (i, ai) 。在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0)。找出其
LeetCode第11題 盛水最多的容器
max col 移動 ger 最大值 turn 個數 容量 height /* 給定 n 個非負整數 a1,a2,...,an,每個數代表坐標中的一個點 (i, ai) 。 在坐標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0)。 找
LeetCode題庫解答與分析——#11.盛最多水的容器ContainerWithMostWater
#11 盛最多水的容器 Container With Most Water給定 n 個正整數 a1,a2,...,an,其中每個點的座標用(i, ai)表示。 畫 n 條直線,使得線 i 的兩個端點處於(i,ai)和(i,0)處。請找出其中的兩條直線,使得他們與 X 軸形成的
[leetcode] 11.盛最多水的容器
scrip alt 分享 containe 可能性 其中 .com 大於 leetcode 盛最多水的容器 題意好繞,看半天都沒懂要幹什麽。 我直接上個圖可能就能一眼看明白了: 總之,當明白題意後,直接就能想到暴力法枚舉所有可能性,不過如果再畫一下圖基本就能發現:兩線段之