排序 
      
    
      
      
      
        数组 
      
    
      
      
      
        贪心 
      
    
   
  
    
      
       
     
  
  
    
      
    
    
      
       
     
  
题目描述 
给你一个的整数数组 nums, 将该数组重新排序后使 nums[0] <= nums[1] >= nums[2] <= nums[3]... 
输入数组总是有一个有效的答案。
 
示例 1: 
输入: nums = [3,5,2,1,6,4]
输出: [3,5,1,6,2,4]
解释: [1,6,2,5,3,4]也是有效的答案 
示例 2: 
输入: nums = [6,6,5,6,3,8]
输出: [6,6,5,6,3,8]
 
 
提示: 
    1 <= nums.length <= 5 * 104  
    0 <= nums[i] <= 104  
    
    输入的 nums 保证至少有一个答案。
     
 
 
进阶: 你能在 O(n) 时间复杂度下解决这个问题吗?
解法 
方法一 
Python3 Java C++ Go 
class   Solution : 
    def   wiggleSort ( self ,  nums :  List [ int ])  ->  None : 
         """ 
        Do not return anything, modify nums in-place instead. 
        """ 
        for  i  in  range ( 1 ,  len ( nums )): 
            if  ( i  %  2  ==  1  and  nums [ i ]  <  nums [ i  -  1 ])  or  ( 
                i  %  2  ==  0  and  nums [ i ]  >  nums [ i  -  1 ] 
            ): 
                nums [ i ],  nums [ i  -  1 ]  =  nums [ i  -  1 ],  nums [ i ] 
 
 
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
10 
11 
12 
13 
14 
15 class  Solution   { 
     public   void   wiggleSort ( int []   nums )   { 
         for   ( int   i   =   1 ;   i   <   nums . length ;   ++ i )   { 
             if   (( i   %   2   ==   1   &&   nums [ i ]   <   nums [ i   -   1 ] )   ||   ( i   %   2   ==   0   &&   nums [ i ]   >   nums [ i   -   1 ] ))   { 
                 swap ( nums ,   i ,   i   -   1 ); 
             } 
         } 
     } 
     private   void   swap ( int []   nums ,   int   i ,   int   j )   { 
         int   t   =   nums [ i ] ; 
         nums [ i ]   =   nums [ j ] ; 
         nums [ j ]   =   t ; 
     } 
} 
 
 
class   Solution   { 
public : 
     void   wiggleSort ( vector < int >&   nums )   { 
         for   ( int   i   =   1 ;   i   <   nums . size ();   ++ i )   { 
             if   (( i   %   2   ==   1   &&   nums [ i ]   <   nums [ i   -   1 ])   ||   ( i   %   2   ==   0   &&   nums [ i ]   >   nums [ i   -   1 ]))   { 
                 swap ( nums [ i ],   nums [ i   -   1 ]); 
             } 
         } 
     } 
}; 
 
 
func   wiggleSort ( nums   [] int )   { 
     for   i   :=   1 ;   i   <   len ( nums );   i ++   { 
         if   ( i % 2   ==   1   &&   nums [ i ]   <   nums [ i - 1 ])   ||   ( i % 2   ==   0   &&   nums [ i ]   >   nums [ i - 1 ])   { 
             nums [ i ],   nums [ i - 1 ]   =   nums [ i - 1 ],   nums [ i ] 
         } 
     } 
}