摆动排序。题意是给一个数组,请按照如下的方式重新排序。
nums[0] <= nums[1] >= nums[2] <= nums[3]...
例子,对于这样的数组,排序前后长这样。
Input: nums = [1, 5, 1, 1, 6, 4] Output: One possible answer is [1, 4, 1, 5, 1, 6].
思路很简单,就是按照规则比较数字之间的大小关系。代码如下
时间O(n)
空间O(1)
1 /** 2 * @param {number[]} nums 3 * @return {void} Do not return anything, modify nums in-place instead. 4 */ 5 var wiggleSort = function(nums) { 6 for (let i = 1; i < nums.length; i++) { 7 if ( 8 (i % 2 === 1 && nums[i] < nums[i - 1]) || (i % 2 === 0 && nums[i] > nums[i - 1]) 9 ) { 10 let temp = nums[i - 1]; 11 nums[i - 1] = nums[i]; 12 nums[i] = temp; 13 } 14 } 15 };
来源:https://www.cnblogs.com/aaronliu1991/p/12159323.html