zoukankan      html  css  js  c++  java
  • leetcode324

    Java版本:先将数组排序,从中间将排好序的数组分为small部分和large部分。

    每次从小区间找一个值插入偶数位,从大区间找一个值插入奇数位。

     1 public void wiggleSort(int[] nums) {
     2         int[] temp = Arrays.copyOfRange(nums, 0, nums.length);
     3         Arrays.sort(temp);
     4         //中间点,左侧都是小值
     5         int small = temp.length / 2 + (temp.length % 2 == 0 ? -1 : 0);
     6         //右侧都是大值
     7         int large = temp.length - 1;
     8         for (int i = 0, j = 1; i < temp.length; i += 2, j += 2) {
     9             if (j < temp.length) {
    10                 //用大值插入odd位置
    11                 nums[j] = temp[large--];
    12             }
    13             //用小值插入even位置
    14             nums[i] = temp[small--];
    15         }
    16     }

    补充一个python的版本:

     1 class Solution:
     2     def wiggleSort(self, nums: 'List[int]') -> None:
     3         temp = sorted(nums)
     4         n = len(nums)
     5         mid = n // 2 + n % 2
     6         p1 = temp[:mid]
     7         p2 = temp[mid:]
     8         i = 0
     9         j = 0
    10         k = 0
    11         while k < n:
    12             if k % 2 == 0:
    13                 temp[k] = p1[i]
    14                 k += 1
    15                 i += 1
    16             else:
    17                 temp[k] = p2[j]
    18                 k += 1
    19                 j += 1
    20         print(temp)
    21         for i in range(1,n):
    22             if temp[i-1] == temp[i]:
    23                 nums.clear()
    24                 nums.extend(temp[i:])
    25                 nums.extend(temp[:i])
    26                 print(nums)
    27                 return
    28         nums.clear()
    29         nums.extend(temp)
  • 相关阅读:
    四月⑨日
    4月⑦日
    4月6日
    四月⑧日
    第一天上课
    modelsim的do文件
    SCCB协议
    FPGA之VGA控制
    FPGA常用术语
    乘法器之六(硬件乘法器)
  • 原文地址:https://www.cnblogs.com/asenyang/p/9812876.html
Copyright © 2011-2022 走看看