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=
0;i)
eg:
輸入:abc deg gh
輸出:abc
deggh
#include
#include
const
int maxn=
1e3+5;
using
namespace std;
intmain()
return0;
}
應用:快排的劃分,歸併的歸併部分,kmp演算法等
一般都能夠先想出乙個 o(n
2)o(n^2)
o(n2
) 樸素做法,然後可以改用雙指標
例題:給定乙個長度為n(<1e5)的整數序列,請找出最長的不包含重複數字的連續區間,輸出它的長度。
輸入:5
1 2 2 3 5
輸出:3
所有本題 可以用單調佇列來做,如果範圍很大,不能直接開那麼大的陣列,可以用雜湊表
#include
#include
const
int maxn=
1e5+5;
using
namespace std;
int cnt[maxn]
,a[maxn]
;//cnt用於動態的記錄當前區間內a[i]的個數
此時 cnt[a[i]]=2
雙指標演算法
雙指標演算法模板 for int i 0,j 0 i n i 常見問題分類 1 對於乙個序列,用兩個指標維護一段區間 2 對於兩個序列,維護某種次序,比如歸併排序中合併兩個有序序列的操作 例題1 最長連續不重複子序列 給定乙個長度為n的整數序列,請找出最長的不包含重複數字的連續區間,輸出它的長度。輸...
雙指標演算法
一般雙指標的模板 雙指標演算法的思考方式 先想出暴力做法,再觀察是否存在單調性。傳統的演算法需列舉兩個指標的組合,兩個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...