使用雙指標思想處理陣列求解過程,降低時間複雜度

2021-10-07 06:36:57 字數 878 閱讀 5367

給你 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就在那個位置,...