*LeetCode-Wiggle Sort

又是不知道怎么想

规律是 每两个两个之间是小于 每对之间是大于 

所以就根据 i 的奇偶性来判断两个连续数字见的关系 并且可以发现swap不会影响前面的正确 因为一对之间的关系应该是大于 假如是小于 需要swap 那么只会给前面换过去一个更大的 所以不用担心

public class Solution {
    public void wiggleSort(int[] nums) {
        for ( int i = 0; i < nums.length - 1; i ++ ){
            if ( i % 2 == 0 ){
                if ( nums[ i ] > nums [ i + 1 ] )
                    swap ( nums, i, i + 1 );
            }
            else if ( nums [ i ] < nums [ i + 1 ] )
                swap ( nums, i, i + 1 );
        }
    }
    public void swap ( int [] nums, int p1, int p2 ){
        int temp = nums[ p1 ];
        nums[ p1 ] = nums [ p2 ];
        nums[ p2 ] = temp;
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章