• lintcode:Wiggle Sort


    Wiggle Sort

    Given an unsorted array nums, reorder it in-place such that

    nums[0] <= nums[1] >= nums[2] <= nums[3]....
     注意事项

    Please complete the problem in-place.

    样例

    Given nums = [3, 5, 2, 1, 6, 4], one possible answer is [1, 6, 2, 5, 3, 4].

    解题

    竟然可以直接交换

    对i位置

    对奇数位需要是:A[i] >= A[i-1]  奇数位的数大于后一个的数,当是A[i] < A[i-1] 的时候交换

    对偶数位需要是:A[i] <=A[i-1] 偶数位的数小于后一个数,当是A[i] > A[i-1] 的时候交换

    对给的样例

    原始数组:[3,5,2,1,6,4]

    第一次:[3,5,2,1,6,4] 3<=5 不交换

    第二次:[3,5,2,1,6,4] 5>=2 不交换

    第三次:[3,5,1,2,6,4] 2>1 交换 小的换到前面不影响上一次的情况 1<=2

    第四次:[3,5,1,6,2,4] 2<6 交换, 大的换的前面不影响,6>=2

    第五次:[3,5,2,1,6,4] 2<=4 不需要交换

    public class Solution {
        /**
         * @param nums a list of integer
         * @return void
         */
        public void wiggleSort(int[] nums) {
            // Write your code here
            if(nums == null || nums.length == 0)
                return;
            int n = nums.length;
            for(int i = 1;i<n ; i++){
                if( (i%2==1 && nums[i] < nums[i-1] ) || (i%2==0 && nums[i] > nums[i-1])){
                    nums[i]^=nums[i-1];
                    nums[i-1]^=nums[i];
                    nums[i]^=nums[i-1];
                }
            }
        }
    }
  • 相关阅读:
    django2自动发现项目中的url
    Python中的__name__
    阻塞与非阻塞、同步与异步、I/O模型
    Python中的关键字的用法
    元类
    数据库介绍
    django+nginx+uwsgi 项目部署
    centos7安装mysql5.6
    MySQL5.7的新特性
    Python进行MySQL数据库操作
  • 原文地址:https://www.cnblogs.com/theskulls/p/5348361.html
Copyright © 2020-2023  润新知