zoukankan      html  css  js  c++  java
  • 324. Wiggle Sort II

    这题居然没记过。

    June-12-2019

    wiggle sort I
    比较直观就是一大一小

    class Solution {
        public void wiggleSort(int[] nums) {
            if (nums.length <= 1) return;
            
            boolean findLarger = true;
            for (int i = 1; i < nums.length; i ++) {
                if (findLarger) {
                    if (nums[i] < nums[i - 1]) {
                        swap(i, i - 1, nums);
                    }
                } else {
                    if (nums[i] > nums[i - 1]) {
                        swap(i, i - 1, nums);
                    }
                }
                findLarger = !findLarger;
            }
            return;
        }
        
        public void swap(int l, int r, int[] nums) {
            int temp = nums[l];
            nums[l] = nums[r];
            nums[r] = temp;
        }
    }
    

    然后看亩地有人说G家的面试题是A数组给单调性,B数组根据A的来调。
    A = [1,1,1,1][0,0,0][1,1][0,0,0]
    给个数组,1代表递增,0代表递减,B数组来根据A的递增递减排列。
    B = [9,8,7,6][19,21,66][12,3][11,5,28]

    先排列[1,1,1,1] 要带上=> [6,7,8,9]
    再排列[1,1,1,1][0,0,0] => 要带上上一个区间的最后一个元素 => [6,7,8,66][21,19,9]
    再排列[1,1,1,1][0,0,0][1,1] => [6,7,8,66][21,19,3][9,12]

    Wiggle sort-I其实就是A数组是[1][0][1][0]这样,每次temp都是带上i-1来比较的。

    Wiggle sort II
    一个意思,只不过多了相等的元素。只会最单纯的解。 找中位数,然后奇偶位从左边右边来回拿。
    要倒着拿,否则[1,2,2,3] 会挂,得是[****2,3,1,2],目的是左边最大值尽量远离右边最小值来避免多个相等中位数。
    中位数要当做左边最大值对待,所以
    m = (nums.length + 1) >> 1 - 1
    m = (nums.length + 1)/2 -1;

        public void wiggleSort(int[] nums) {
            if (nums.length <= 1) return;
            Arrays.sort(nums);
            int[] tempNums = new int[nums.length];
            
            int s = ((nums.length + 1) >> 1) - 1;
            int l = nums.length - 1;
            
            for (int i = 0; i < nums.length; i ++) {
                tempNums[i] = (i & 1) == 0 ? nums[s--] : nums[l --];
            }
            
            for (int i = 0; i < nums.length; i ++) {
                nums[i] = tempNums[i];
            }
        }
    
  • 相关阅读:
    资料
    CSS 折角效果
    CSS3 动画
    选择器--验证表单
    -moz 火狐 -msIE -webkit[chrome safari]
    css3 fileter始终效果 图片渲染
    jquery 库下载地址http://www.jq22.com/jquery-info122
    CSS 文字垂直居中
    图片预加载技术(存在问题,已修复)
    Round#628(div2)
  • 原文地址:https://www.cnblogs.com/reboot329/p/11009860.html
Copyright © 2011-2022 走看看