給你 n 個非負整數 a1,a2,…,an,每個數代表座標中的乙個點 (i, ai) 。在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0)。找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。
說明:你不能傾斜容器,且 n 的值至少為 2。
暴力解法
#include
#include
#include
using
namespace std;
intmaxarea
(vector<
int>
& height)
}return max;
}int
main()
; cout <<
maxarea
(height)
<< endl;
return0;
}
雙指標解法
#include
#include
#include
using
namespace std;
intmaxarea
(vector<
int>
& height)
else
}return max;
}int
main()
; cout <<
maxarea
(height)
<< endl;
return0;
}
雙指標思想
雙指標思想 雙指標並不是真正意義上的指標 它是指 通過用兩個變數的動態儲存兩個或多個結點,來達到簡化某些流程的目的 第一種型別的雙指標 兩個序列,兩個指標 第二種型別的雙指標 乙個序列,兩個指標 維護區間 例題1 陣列元素的目標和 兩個序列,兩個指標 保證有唯一的解 include using na...
山脈陣列 雙指標的解題思想
給定乙個整數陣列 a,如果它是有效的山脈陣列就返回 true,否則返回 false。讓我們回顧一下,如果 a 滿足下述條件,那麼它是乙個山脈陣列 a.length 3 在 0 i a.length 1 條件下,存在 i 使得 a 0 a 1 a i 1 a i a i a i 1 a a.lengt...
雙指標解決陣列排序問題
這個問題如果注意,用一句就可以解決 sort nums.begin nums.end 完事。但是人家明確說了,不能用 庫中的排序函式。我們就得自己去實現排序。其實這個問題很簡單,因為裡面只有三種顏色,用0 1 2 表示。思想也很簡單,就是我們用雙指標遍歷陣列。如果遇到0放在前面,遇到1就在那個位置,...