資料結構演算法(二)

2021-10-04 10:19:34 字數 2798 閱讀 5148

單調棧給定乙個長度為 n 的整數數列,輸出每個數左邊第乙個比它小的數,如果不存在則輸出 -1。

輸入格式

第一行包含整數 n,表示數列長度。

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

輸出格式

共一行,包含 n 個整數,其中第 i 個數表示第 i 個數的左邊第乙個比它小的數,如果不存在則輸出 -1。

資料範圍

1 ≤ n ≤ 105

1 ≤ 數列中元素 ≤ 109

輸入樣例:

5

3 4 2 7 5

輸出樣例:

-1 3 -1 2 2

#include

using

namespace std;

const

int n =

1e5+10;

int stu[n]

, tt;

intmain()

return0;

}

單調佇列滑動視窗

給定乙個大小為 n ≤ 106的陣列。

有乙個大小為 k 的滑動視窗,它從陣列的最左邊移動到最右邊。

您只能在視窗中看到 k 個數字。

每次滑動視窗向右移動乙個位置。

以下是乙個例子:

該陣列為[1 3 -1 -3 5 3 6 7],k為3。

視窗位置

最小值最大值

[1 3 -1] -3 5 3 6 7-13

1 [3 -1 -3] 5 3 6 7-33

1 3 [-1 -3 5] 3 6 7-35

1 3 -1 [-3 5 3] 6 7-35

1 3 -1 -3 [5 3 6] 736

1 3 -1 -3 5 [3 6 7]37

您的任務是確定滑動視窗位於每個位置時,視窗中的最大值和最小值。

輸入格式

輸入包含兩行。

第一行包含兩個整數n和k,分別代表陣列長度和滑動視窗的長度。

第二行有n個整數,代表陣列的具體數值。

同行資料之間用空格隔開。

輸出格式

輸出包含兩個。

第一行輸出,從左至右,每個位置滑動視窗中的最小值。

第二行輸出,從左至右,每個位置滑動視窗中的最大值。

輸入樣例:

8 3

1 3 -1 -3 5 3 6 7

輸出樣例:

-1 -3 -3 -3 3 3

3 3 5 5 6 7

#include

using

namespace std;

const

int n =

1000010

;int a[n]

, q[n]

;int

main()

puts(""

);hh =

0, tt =-1

;for

(int i =

0; i < n; i ++

)puts(""

);return0;

}

kmp字串

看這裡

trie字串統計

維護乙個字串集合,支援兩種操作:

「i x」向集合中插入乙個字串x;

「q x」詢問乙個字串在集合**現了多少次。

共有 n 個操作,輸入的字串總長度不超過 105,字串僅包含小寫英文本母。

輸入格式

第一行包含整數 n,表示運算元。

接下來 n 行,每行包含乙個操作指令,指令為 」i x」 或 」q x」 中的一種。

輸出格式

對於每個詢問指令 」q x」,都要輸出乙個整數作為結果,表示 x 在集合**現的次數。

每個結果佔一行。

資料範圍

1 ≤ n ≤ 2∗104

輸入樣例:

5

i abc

q abc

q ab

i ab

q ab

輸出樣例:

101

#include

using

namespace std;

const

int n =

1e5+10;

int son[n][26

];int cnt[n]

, idx;

char str[n]

;void

insert

(char str)

// 此時的p就是str中最後乙個字元對應的trie樹的位置idx

cnt[p]++;

//計數

}int

query

(char str)

return cnt[p];}

intmain()

return0;

}

資料結構 二 演算法

演算法 是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作 輸入輸出 演算法具有零個或多個輸入。演算法至少有乙個或多個輸出 有窮性 在可接受的時間範圍內結束,不會出現出現迴圈 確定性 不會出現二義性 可行性 每一步都能執行有限次數完成 正確性 沒有語法錯誤 ...

演算法和資料結構(二) 演算法

接著上篇部落格,這篇部落格我們一起看看傳說中的演算法 早知道這麼簡單,早點看看的話,阿里也就去了,淚奔.面試常見的演算法分為兩種 排序演算法和查詢演算法。1 逐個比較相鄰的兩個元素,將較大的值往後放 2 第一輪比較完最大的元素放陣列最後,第二輪剩下的元素裡最大的元素放陣列倒數第二位.public c...

資料結構 二 演算法緒論

一,演算法定義 算是是對於特定問題的求解步驟的描述,在計算機中表現為有限的指令序列.每條指令序列包含乙個或者多個操作 二,演算法的特徵 1,輸入.演算法有零個或者多個輸入 2,輸出.演算法至少要有乙個輸出 3,確定性.演算法的每乙個步驟都有確定的含義,不會出現二義性 4,可行性.每一步執行有限次數完...