[贪心] leetcode 1144減少要素は、Arrayジグザグを確認するには

問題:https://leetcode.com/contest/weekly-contest-148/problems/decrease-elements-to-make-array-zigzag/

        貪欲なタイトル。二つの可能なジグザグがあり、最大値インデックスが偶数のインデックスが最大である、奇数です。可能な最小数の減少は、それぞれ、これらの2つの場合で計算します。

        1 - [I]> = [I-1]、あなたがしたい場合は、[I] <[I-1]、そのような[I] =という[I-1]の場合。

        以下は、そこに合理化することができる競技、中のコードです:

        (この質問は簡単にメディアになってどのように突然、それを起動していません)

クラス解決{
 パブリックINT movesToMakeZigzag(ベクトル< INT >&NUMS){ 
        
        int型 oddMax = 0 
        ベクター < INT > oddNums(NUMS)。
        以下のためにint型 i = 1 ; iはoddNums.size()<; I ++のを
        { 
            場合(I%2 
            { 
                場合(oddNums [I] <= oddNums [I - 1 ])
                { 
                    oddMax + =(oddNums [I - 1 ] - oddNums [I])+ 1; 
                    oddNums [I - 1 ] = oddNums [I] - 1 
                } 
            } 
             
            { 
                場合(oddNums [I]> = oddNums [I - 1 ])
                { 
                    oddMax + =(oddNums [I] - oddNums [I - 1 ])+ 1 
                    oddNums [I] = oddNums [I - 1 ] - 1 
                }                
            } 
        } 
        int型 evenMax = 0 
        ベクトル < int型> evenNums(NUMS)。
        以下のためにint型 i = 1 ; iは<evenNums.size(); iは++を
        { 
            場合(I%2 
            { 
                場合(evenNums [I]> = evenNums [I - 1 ])
                { 
                    evenMax + =(evenNums [I] - evenNums [I - 1 ])+ 1 
                    evenNums [I] = evenNums [I - 1 ] - 1 
                } 
            } 
             
            { 
                場合(evenNums [I] <= evenNums [I -1 ])
                { 
                    evenMax + =(evenNums [I - 1 ] - evenNums [I])+ 1 
                    evenNums [I - 1 ] = evenNums [I] - 1 
                }                
            }            
        } 
   //      coutの<< oddMax << "" << evenMax <<てendl; 
        戻り分(oddMax、evenMax)。
    } 
}。

 

おすすめ

転載: www.cnblogs.com/fish1996/p/11297968.html