Given an unsorted array nums
, reorder it in-place such that nums[0] <= nums[1] >= nums[2] <= nums[3]...
.
For example, given nums = [3, 5, 2, 1, 6, 4]
, one possible answer is [1, 6, 2, 5, 3, 4]
.
题目标签:Array, Sort
题目给了我们一个nums array, 让我们wiggle sort。
wiggle sort 特性:所有index 是odd 的数字 大于等于两边数字。
我们可以从另一个角度理解:所有even index 的数字 要小于 下一个数字;所有odd index 的数字 要大于等于 下一个数字。
这样就可以遍历nums,根据奇数偶数 来检查每一对数字,如果不符合要求的,swap 它们。
Java Solution:
Runtime beats 60.02%
完成日期:09/10/2017
关键词:Array
关键点:遍历检查每一对数字,不符合要求就对换
class Solution
{
public void wiggleSort(int[] nums)
{
for(int i=0; i<nums.length; i++)
{
// for even index
if(i % 2 == 0)
{
// if even index number > next one, swap them
if(i+1 < nums.length && nums[i] > nums[i+1])
{
int temp = nums[i];
nums[i] = nums[i+1];
nums[i+1] = temp;
}
}
else // for odd index
{
// if odd index number < next one, swap them
if(i+1 < nums.length && nums[i] < nums[i+1])
{
int temp = nums[i];
nums[i] = nums[i+1];
nums[i+1] = temp;
}
}
}
}
}
参考资料:N/A
LeetCode 算法题目列表 - LeetCode Algorithms Questions List