Leetcode 324. Wiggle Sort II
题目链接: Wiggle Sort II
难度:Medium
题目大意:
对数组nums进行排序,使得nums[0] < nums[1] > nums[2] < nums[3]…
思路:
先把nums按升序排列,分成两半,将较大的数放在奇数下标的位置,较小的数放在偶数下标位置。
代码
class Solution {
public void wiggleSort(int[] nums) {
int len=nums.length;
int[] a=new int[len];
for(int i=0;i<len;i++){
a[i]=nums[i];
}
Arrays.sort(a);
int small,large=len-1;
if(len%2==1){
small=len/2;
}
else{
small=len/2-1;
}//让大数比旁边两个数大一点即可,保证所有数都能满足题意
for(int i=0;i<len;i++){
if(i%2==0){
nums[i]=a[small--];
}
else{
nums[i]=a[large--];
}
}
}
}