376スイングシーケンス
厳密に正と負の数との間に交互に連続する数の差場合、シーケンス番号のシーケンスは、ウォブルと呼ばれています。第1の相違点は、(もしあれば)、正または負であってもよいです。配列の2つの要素よりも小さいもシーケンスを振ります。
差(6、3,5、-7,3)が交互の正および負であるので、例えば、[1,7,4,9,2,5]は、ウォブルの配列です。それは最初の二つの間に第一の配列の差であるのでこれとは対照的に、[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)の時間計算量を使用することができますか?
class Solution {
public int wiggleMaxLength(int[] nums) {
int n = nums.length;
if (n < 2) {
return n;
}
int up = 1;
int down = 1;
for (int i = 1; i < n; i++) {
if (nums[i] > nums[i - 1]) {
up = down + 1;
}
if (nums[i] < nums[i - 1]) {
down = up + 1;
}
}
return Math.max(up, down);
}
}