国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Leetcode 11 - Container With Most Water(two pointers)

2019-11-08 01:41:25
字體:
來源:轉載
供稿:網友

github倉庫:https://github.com/lzed/leetcode

題意

給定一堆豎著的線,找兩條線,使這兩條線圍城的容器的面積最大。

思路

首先,我們先貪心的去考慮:假設我們直接取最兩邊的兩條線i和j,能否獲得最大高度?顯然是不一定的。

然后,我們去需要取移動兩邊的選取i和j了。

然后基于如下事實:

ai<aj,并且若向左移動j到k的位置,那么此時的面積S′=min(ai,ak)(k?i)

ai>aj,那么我們向右移動i不會更新最優解。

所以,就可以得到我們的算法:

兩個指針i和j分別指向首尾。若ai<aj:向右移動i,更新答案。否則,向左移動j,更新答案。

代碼

class Solution {public: int maxArea(vector<int>& a) { int i = 0, j = a.size() - 1, ans = 0; while (i < j) { if (a[i] < a[j]) ans = max(ans, a[i] * (j - i++)); else ans = max(ans, a[j] * (j-- - i)); } return ans; }};
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海城市| 土默特右旗| 连城县| 林口县| 铁岭县| 策勒县| 邵东县| 饶河县| 浦城县| 龙里县| 潜江市| 新宁县| 福安市| 定西市| 宜君县| 莒南县| 三门峡市| 平塘县| 鄢陵县| 武邑县| 绥江县| 泰兴市| 丹寨县| 神农架林区| 丹阳市| 民权县| 海丰县| 沙雅县| 沐川县| 瑞丽市| 邯郸市| 尖扎县| 易门县| 夹江县| 辰溪县| 称多县| 萨嘎县| 绥芬河市| 银川市| 永和县| 屏南县|