[Java] 376.スイングシーケンス--- O(n)時間計算量で問題が解決します!!!

連続する数の差が正の数と負の数の間で厳密に交互になる場合、数のシーケンスはウォブルシーケンスと呼ばれます。最初の違い(存在する場合)は、正または負の場合があります。2つ未満の要素のシーケンスもウォブルシーケンスです。

たとえば、[1,7,4,9,2,5]は、差(6、-3,5、-7,3)が正と負の間で交互になっているため、スイングシーケンスです。逆に、[1,4,7,2,5]と[1,7,4,5,5]はスイングシーケンスではありません。最初のシーケンスは、最初の2つの違いが両方とも正であるためです。2番目のシーケンスは最後の差がゼロだからです。

整数シーケンスを指定すると、最長サブシーケンスの長さをウォブルシーケンスとして返します。サブシーケンスは、元のシーケンスからいくつかの要素を削除する(または削除しない)ことによって取得され、残りの要素は元の順序を維持します。

例1:

入力:[1,7,4,9,2,5]
出力:6
説明:シーケンス全体がスイングシーケンスです。
例2:

入力:[1,17,5,10,13,15,10,5,16,8]
出力:7
説明:このシーケンスには、いくつかの7長のスイングシーケンスが含まれています。そのうちの1つは[1,17,10、 13,10,16,8]。
例3:

入力:[1,2,3,4,5,6,7,8,9]
出力:2

public static int wiggleMaxLength(int[] nums) {
    
    
		if(nums.length<2) {
    
    
			return nums.length;
		}
		int a=1;
		int b=1;
		for(int i=1;i<nums.length;i++) {
    
    
			if(nums[i]>nums[i-1]) {
    
    
				a=b+1;
			}
            if(nums[i]<nums[i-1]) {
    
    
				b=a+1;
			}
		}
		return Math.max(a, b);
    }

おすすめ

転載: blog.csdn.net/qq_44461217/article/details/111085340