原題目
題目分析
方法一:直接遍歷
將陣列拆分,把每一部分分成乙個單調序列,即單調遞增和單調遞減交替出現如
[1,17,5,10,13,15,10,5,16,8]
將其分成
1,17
17,5
5,10,13,15
15,10,5
5,16
16,8
元素的個數=序列個數+1
那麼如何查詢單調序列
即定乙個最小值和乙個最大值,然後遍歷找每個序列的最小值和最大值,以此來判斷是否滿足要求
以上例為例
指標從首位開始遍歷i=0,統計數res=1,若有數字存在則至少有1個數字滿足條件
將陣列第乙個元素賦值給min=1;
迴圈將指標移動到序列最大位置即只要下一位大於等於當前值就往後移動一位.此時i=1
如果指標位置值大於min說明這個單調遞增序列成立,返回值res+1
將當前最大值賦值給max=17
迴圈將指標移動到序列最小位置即即只要下一位小於等於當前值就往後移動一位.此時i=2
如果指標位置值小於min說明這個單調遞增序列成立,返回值res+1
以此類推,進入第二次迴圈
完整**
int
wigglemaxlength
(int
* nums,
int numssize)
if(min)//判斷當前序列最大值是否大於最小值
max=nums[i]
;//當前序列最大值
while
(i1&&nums[i]
>=nums[i+1]
)//遍歷到陣列最小值
if(max>nums[i]
)//判斷當前序列最大值是否大於最小值
}return res;
}
leetcode376擺動序列
def wigglemaxlength two nums up j 表示當前元素較上乙個元素是公升序狀態,所以要找到與公升序狀態之前最近的逆序的狀態的長度down j 1 到i時當前序列的最長的擺動陣列的長度 down j 表示當前元素較上乙個元素是逆序的長度,到i時當前序列的最長的擺動陣列的長度 ...
Leetcode 376 擺動序列
如果連續數字之間的差嚴格地在正數和負數之間交替,則數字序列稱為擺動序列。第乙個差 如果存在的話 可能是正數或負數。少於兩個元素的序列也是擺動序列。例如,1,7,4,9,2,5 是乙個擺動序列,因為差值 6,3,5,7,3 是正負交替出現的。相反,1,4,7,2,5 和 1,7,4,5,5 不是擺動序...
leetcode376擺動序列
如果連續數字之間的差嚴格地在正數和負數之間交替,則數字序列稱為擺動序列。第乙個差 如果存在的話 可能是正數或負數。少於兩個元素的序列也是擺動序列。例如,1,7,4,9,2,5 是乙個擺動序列,因為差值 6,3,5,7,3 是正負交替出現的。相反,1,4,7,2,5 和 1,7,4,5,5 不是擺動序...