[LeetCode] 280. Wiggle Sort

怎甘沉沦 提交于 2020-01-07 03:36:41

摆动排序。题意是给一个数组,请按照如下的方式重新排序。

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 };
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!