雙指標演算法

2021-10-02 19:01:58 字數 1433 閱讀 6067

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...