• [LeetCode] 280. Wiggle Sort


    Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums[2] <= nums[3]....

    Example:

    Input: nums = [3,5,2,1,6,4]
    Output: One possible answer is [3,5,1,6,2,4]

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

    思路很简单,就是按照规则比较数字之间的大小关系。规则是如果当前index是奇数,那么这个位置上的数字要大于等于他前面一个位置上的数字;如果当前index是偶数,那么这个位置上的数字要小于等于他前面一个位置上的数字。对于不满足条件的情况,只需要做相对应的swap即可。

    时间O(n)

    空间O(1)

    JavaScript实现

     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 ((i % 2 === 1 && nums[i] < nums[i - 1]) || (i % 2 === 0 && nums[i] > nums[i - 1])) {
     8             let temp = nums[i - 1];
     9             nums[i - 1] = nums[i];
    10             nums[i] = temp;
    11         }
    12     }
    13 };

    Java实现

     1 class Solution {
     2     public void wiggleSort(int[] nums) {
     3         for (int i = 1; i < nums.length; i++) {
     4             if ((i % 2 == 1 && nums[i] < nums[i - 1]) || (i % 2 == 0 && nums[i] > nums[i - 1])) {
     5                 int temp = nums[i - 1];
     6                 nums[i - 1] = nums[i];
     7                 nums[i] = temp;
     8             }
     9         }
    10     }
    11 }

    LeetCode 题目总结

  • 相关阅读:
    K近邻 Python实现 机器学习实战(Machine Learning in Action)
    sklearn-SVC实现与类参数
    从核函数到SVM原理--sklearn-SVM实现
    基于scikit-learn包实现机器学习之KNN(K近邻)-完整示例
    java集合框架
    面向对象第一周心得体会
    java面试总结
    Aaa
    测试
    在Java中执行Tomcat中startup.bat
  • 原文地址:https://www.cnblogs.com/cnoodle/p/12159323.html
Copyright © 2020-2023  润新知