码迷,mamicode.com
首页 > 其他好文 > 详细

324. Wiggle Sort II

时间:2016-06-05 08:41:10      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

Given an unsorted array nums, reorder it such that nums[0] < nums[1] > nums[2] < nums[3]....

Example:
(1) Given nums = [1, 5, 1, 1, 6, 4], one possible answer is [1, 4, 1, 5, 1, 6]
(2) Given nums = [1, 3, 2, 2, 3, 1], one possible answer is [2, 3, 1, 3, 1, 2].

Note:
You may assume all input has valid answer.

Follow Up:
Can you do it in O(n) time and/or in-place with O(1) extra space?

Credits:
Special thanks to @dietpepsi for adding this problem and creating all test cases.

 

Subscribe to see which companies asked this question

Hide Tags
 Sort
 
 
 
public class Solution {
    public void wiggleSort(int[] nums) {
        Arrays.sort(nums);
        
        int[] copy = new int[nums.length];
        for(int i = 0; i< nums.length; ++i)
        {
            copy[i] = nums[i];
        }
        
        for(int i = 0; i< nums.length; ++i)
        {
            int w = i%2;
            if(w == 0)
            { 
                nums[i] = copy[(nums.length-1)/2 - i/2];
            }   //Take 2,   1,   0
            else//Take   5,   4,   3
            {
                nums[i] = copy[nums.length-1 - i/2];
            }
            
        }
    }
}

 

Odd length: L = 7

Sorted Index: 0, 1, 2, 3, 4, 5, 6   

New    Index: 6, 4, 2, 0, 5, 3, 1      <- map (L-1)/2 to 0.

 

Even length: L = 8

Sorted Index: 0, 1, 2, 3, 4, 5, 6, 7   

New    Index: 6, 4, 2, 0, 7, 5, 3, 1      <- map (L-1)/2 to 0.

 

324. Wiggle Sort II

标签:

原文地址:http://www.cnblogs.com/neweracoding/p/5560040.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!