Longest Zigzag Subsequence
Submit solution
Points:
10 (partial)
Time limit:
1.0s
Memory limit:
64M
Authors:
Problem type
Allowed languages
Java 19, Java 8
題目說明
有一串長度固定為 20 的整數,每個數字介於 -100 到 100 之間。我們要找出其中「最長的一段鋸齒序列」。
「鋸齒序列」是指一段連續的數字,它的上下起伏要交替出現,也就是:相鄰兩個數的差值要輪流變成正、負、正、...,或是負、正、負、...。例如:1, 4, 3, 9, 5 是一段鋸齒序列,因為差值是 3, -1, 6, -4。但如果有兩個相鄰的數一樣,就不是鋸齒序列,因為差值是 0。另外,只有至少 3 個數連在一起的時候,才算一段合法的鋸齒序列。
請找出最長的那一段鋸齒序列,輸出它的起點和終點位置(位置從 0 開始算)。
- 如果有好幾段都一樣長,就輸出「起點最前面」的那一段。
- 如果整串數字裡沒有任何長度達到 3 的鋸齒序列,就輸出
-1 -1。 本題無需使用陣列。
輸入值的格式
輸入 20 個整數,以空白或換行分隔,範圍都在 -100 到 100 之間。
輸出值的格式
輸出兩個整數,分別表示最長鋸齒序列的起點與終點,第一個位置是 0。
若沒有任何長度 ≥ 3 的鋸齒序列,輸出 -1 -1
sample input1
0 0 0 1 5 2 5 3 6 7 8 8 8 9 10 11 12 13 14 15sample output1
3 8解釋:
子數列為:1, 5, 2, 5, 3, 6 的相鄰差值為:+4, -3, +3, -2, +3,正負號交替變化,長度為 6,是全數列中最長的鋸齒序列。其他位置的鋸齒序列長度都比 6 短。 第一個數字的位置是3,最後位置是8
Comments