時間限制: 1 sec 記憶體限制: 32 mb
輸入乙個整數序列:a1, a2, …, an,乙個132模式的子串行ai, aj, ak被定義為:當 i < j < k 時,ai < ak < aj。
設計乙個演算法,當給定有n 個數字的序列時,驗證這個序列中是否含有132模式的子串行。
第一行輸入序列長度n,( 0 <= n <= 15000 )
第二行輸入n個數
如果含有 132模式子串行輸出true,否則輸出false
41 2 3 4
43 1 4 2
4-1 3 2 0
falsetrue
true
第一組資料: 序列中不存在132模式的子串行剛開始理解錯誤,以為132模式是三個連續的陣列後來發現並不是。第二組資料: 序列中有 1 個132模式的子串行: [1, 4, 2]
第三組資料: 序列中有 3 個132模式的的子串行: [-1, 3, 2], [-1, 3, 0] 和 [-1, 2, 0]
思路:按照2->3->1循序去找,大概思路如圖所示。被壓入棧的一定是是按遞減關係的,所以我們要找棧內最大的而又比當前值小的,最後再找後面的值小於t的,才能保證不遺漏。
#include
#include
#include
using
namespace std;
intmain()
if(n<3)
else
}else}if
(f)else}}
}
#include
#include
#include
using
namespace std;
intmain()
if(n<3)
else
while
(!sk.
empty()
&&a[i]
>sk.
top())
sk.push
(a[i]);
}if(f==0)
printf
("false\n");}}}
ZJYYCOJ 水流問題
題目讀完,可能還是會有點朦朦的,題目意思就是,隨意從乙個點出發,問你是否能走到太平洋 即x 1 y 1 和 大西洋 即x n y m 然後看看資料範圍,哦,可以搜!或者是有別的解法!當然dfs,bfs 都是可以的!搜法 俗稱逆向思維,既然要到太平洋,大西洋,那我們就從邊界出發,往裡搜,從太平洋過來的...
ZJYYCOJ問題 A 字母大小全排列
題目描述 給定乙個字串s,通過將字串s中的每個字母轉變大小寫,我們可以獲得乙個新的字串。輸出所有可能的字串的數量。輸入格式 測試樣例由多組測試資料組成,每組測試資料第一行輸入乙個字串s 1 s.length 12 輸出格式 輸出所有可能的字串的數量 樣例輸入 copy q1b2樣例輸出 copy 4...
Leetcode水題 132模式
首先想到的是回溯法,但最壞演算法複雜度為o n 3 而且題目只需要判斷是否存在,而回溯法會把所有可能都嘗試一遍,接著想到貪心,首先找到乙個區域中的最小值a 下標記為i 接著從i 1開始找到乙個區域內的最大值b 下標記為j 從j 1開始找,尋找位於a與b之間的數,找到了,返回true,否則返回從j 1...