classSolution{ // Assume [0,i-1] are all wiggled // for position i // if i is even, then a[i - 2] <= a[i - 1] // if a[i - 1] >= a[i], pass // if a[i - 1] < a[i], swap a[i - 1] with a[i]. Since a[i - 2] <= a[i -1], so a[i - 2] < a[i], so [0, i] wiggled after swapping // if i is odd, then a[i - 2] >= a[i - 1] // if a[i - 1] <= a[i], pass // if a[i - 1] > a[i], swap a[i - 1] with a[i]. Since a[i - 2] >= a[i - 1], so a[i - 2] > a[i], so [0, i]wiggled after swapping publicvoidwiggleSort(int[] nums){ for (int i = 1; i < nums.length; i++){ if (i % 2 == 0){ if (nums[i - 1] < nums[i]){ swap(nums, i); } } else{ if (nums[i - 1] > nums[i]){ swap(nums, i); } } } } privatevoidswap(int[] nums, int idx){ int temp = nums[idx - 1]; nums[idx - 1] = nums[idx]; nums[idx] = temp; } }
v1.5.2