雙指標演算法

2021-09-26 20:10:16 字數 1507 閱讀 1603

雙指標演算法模板

for (int i = 0, j = 0; i < n; i ++ )

常見問題分類:

(1) 對於乙個序列,用兩個指標維護一段區間

(2) 對於兩個序列,維護某種次序,比如歸併排序中合併兩個有序序列的操作

例題1:最長連續不重複子序列

給定乙個長度為n的整數序列,請找出最長的不包含重複數字的連續區間,輸出它的長度。

輸入格式

第一行包含整數n。

第二行包含n個整數(均在0~100000範圍內),表示整數序列。

輸出格式

共一行,包含乙個整數,表示最長的不包含重複數字的連續子串行的長度。

資料範圍

1≤n≤100000

輸入樣例:

5

1 2 2 3 5

輸出樣例:

3
#include using namespace std;

const int n = 100000+5;

int a[n],sum[n];

int main()

printf("%d",res);

return 0;

}

當乙個數列具有單調性時,可考慮使用雙指標演算法。例題2:陣列元素的目標和

給定兩個公升序排序的有序陣列a和b,以及乙個目標值x。陣列下標從0開始。

請你求出滿足a[i] + b[j] = x的數對(i, j)。

資料保證有唯一解。

輸入格式

第一行包含三個整數n,m,x,分別表示a的長度,b的長度以及目標值x。

第二行包含n個整數,表示陣列a。

第三行包含m個整數,表示陣列b。

輸出格式

共一行,包含兩個整數 i 和 j。

資料範圍

陣列長度不超過100000。

同一陣列內元素各不相同。

1≤陣列元素≤10^9

輸入樣例:

4 5 6

1 2 4 7

3 4 6 8 9

輸出樣例:

雙指標演算法

title 雙指標演算法 date 2019 05 26 23 45 09 tags 雙指標演算法 雙指標演算法 主要是兩大類 核心思想 將乙個 o n 2 o n 2 o n2 的演算法 優化成 o n o n o n 的for int i 0 i for int j 0 j for i 0,j ...

雙指標演算法

一般雙指標的模板 雙指標演算法的思考方式 先想出暴力做法,再觀察是否存在單調性。傳統的演算法需列舉兩個指標的組合,兩個for迴圈時間複雜度為o n 2 雙指標演算法會使時間複雜度變為o n 給定乙個長度為n的整數序列,請找出最長的不包含重複數字的連續區間,輸出它的長度。輸入格式 第一行包含整數n。第...

雙指標演算法

leetcode 141 環形鍊錶 definition for singly linked list.struct listnode class solution return false leetcode 142 環形鍊錶2 class solution if hascycle return n...