如果連續數字之間的差嚴格地在正數和負數之間交替,則數字序列稱為擺動序列。第乙個差(如果存在的話)可能是正數或負數。少於兩個元素的序列也是擺動序列。閱讀題目可知:如果是 1 2 1的序列 2-1=1 ,1-2=-1,相隔兩個數之間的差為正負正負則是擺動序列,求子序列則是陣列內所有符合這個規則。當遇到遞增序列或者遞減序列時 則貪心選擇最大的數字 這樣與後面的數字有更大可能組成上公升下降序列。例如, [1,7,4,9,2,5] 是乙個擺動序列,因為差值 (6,-3,5,-7,3) 是正負交替出現的。相反, [1,4,7,2,5]
和 [1,7,4,5,5] 不是擺動序列,第乙個序列是因為它的前兩個差值都是正數,第二個序列是因為它的最後乙個差值為零。
給定乙個整數序列,返回作為擺動序列的最長子序列的長度。 通過從原始序列中刪除一些(也可以不刪除)元素來獲得子串行,剩下的元素保持其原始順序。
示例 1:
輸入: [1,7,4,9,2,5] 輸出: 6 解釋: 整個序列均為擺動序列。 示例 2:
輸入: [1,17,5,10,13,15,10,5,16,8] 輸出: 7 解釋: 這個序列包含幾個長度為 7
擺動序列,其中乙個可為[1,17,10,13,10,16,8]。 示例 3:
輸入: [1,2,3,4,5,6,7,8,9] 輸出: 2
利用狀態機完成這道題 狀態有 開始,上公升,下降。當為開始狀態時,後面的數字大於小於都可以,當上公升狀態時,只有後面的數字小於之前的數字 變為下降序列才可以。每次改變狀態時 count++。
**
class
solution
else
if(nums[i]
)//後一位小於前一位
break
;case1:
if(nums[i]
)//前一段為上公升,這一段必須為下降
break
;case2:
if(nums[i]
>nums[i-1]
)break;}
}return count;}}
;
超級書架(貪心思想)
題面 from luogu 超級書架 farmer john最近為奶牛們的圖書館添置了乙個巨大的書架,儘管它是如此的大,但它還是幾乎瞬間就被各種各樣的書塞滿了。現在,只有書架的頂上還留有一點空間。所有n 1 n 20,000 頭奶牛都有乙個確定的身高h i 1 h i 10,000 設所有奶牛身高的...
Leetcode 214 最短回文串 貪心思想
直觀的想法,先找到s從0開始的最長回文子串,然後答案就是右邊的反轉 s 問題變為求從0開始的最長回文子串,如果直接用從右貪心列舉的方法,時間複雜度是o n 2 超時。class solution if i s.length 1 return s for int j s.length 1 j i j ...
最優合併問題 貪心思想
最優合併問題 description 給定k 個排好序的序列s1 s2,sk 用2 路合併演算法將這k 個序列合併成乙個序列。假設所採用的2 路合併演算法合併2 個長度分別為m和n的序列需要m n 1次比較。試設計乙個演算法確定合併這個序列的最優合併順序,使所需的總比較次數最少。為了進行比較,還需要...