利用貪心思路求擺動序列的長度

2021-10-21 13:45:48 字數 791 閱讀 4965

題目鏈結

如果連續數字之間的差嚴格地在正數和負數之間交替,則數字序列稱為擺動序列。第乙個差(如果存在的話)可能是正數或負數。少於兩個元素的序列也是擺動序列。例如, [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

高階:你能否用 o(n) 時間複雜度完成此題?

擺動的意思簡單來說就是相鄰的兩個元素逆序,有多少逆序說明就有多少個數是擺動序列,不是逆序的不記錄,比如連續非遞減或者非遞增序列,只取當前有序的峰值

int

wigglemaxlength

(vector<

int>

& nums)

}return result;

}

程式設計之美 1 4 買書問題 貪心思路的分析

這段時間太忙,好久沒有寫csdn了,今天在重新看程式設計之美1.4買書問題的時候有了新的體會,於是就記錄下來。看來真是 溫故而知新 1.5首先給出了乙個動態規劃版本,我第一次看程式設計之美的時候,自己一下子也想到了動態規劃版本,就沒往後看了。今天重新看了下才知道後面的貪心才是精華。1 按照正常的思路...

求序列中最長遞增子串行的長度

include define maxnum 100 函式功能 求解序列中的最大遞增子串行的中包含的元素個數 演算法說明 用到了動態規劃問題,分解子問題b陣列是用來儲存每乙個子串行中的最大遞增子串行 求具有n個元素的序列中的最大遞增自序列問題分解為 a 0 a 0 a 1 a 0 a 1 a 2 a ...

求最長上公升子串行的長度

假設要尋找最長上公升子串行的序列是a n 然後尋找到的遞增子串行放入到陣列b中。1 當遍歷到陣列a的第乙個元素的時候,就將這個元素放入到b陣列中,以後遍歷到的元素都和已經放入到b陣列中的元素進行比較 2 如果比b陣列中的每個元素都大,則將該元素插入到b陣列的最後乙個元素,並且b陣列的長度要加1 3 ...