雙指標演算法模板
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...