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

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

 public void wiggleSort(int[] nums) {
int[] temp = Arrays.copyOfRange(nums, , nums.length);
Arrays.sort(temp);
//中间点,左侧都是小值
int small = temp.length / + (temp.length % == ? - : );
//右侧都是大值
int large = temp.length - ;
for (int i = , j = ; i < temp.length; i += , j += ) {
if (j < temp.length) {
//用大值插入odd位置
nums[j] = temp[large--];
}
//用小值插入even位置
nums[i] = temp[small--];
}
}

补充一个python的版本:

 class Solution:
def wiggleSort(self, nums: 'List[int]') -> None:
temp = sorted(nums)
n = len(nums)
mid = n // 2 + n % 2
p1 = temp[:mid]
p2 = temp[mid:]
i =
j =
k =
while k < n:
if k % == :
temp[k] = p1[i]
k +=
i +=
else:
temp[k] = p2[j]
k +=
j +=
print(temp)
for i in range(,n):
if temp[i-] == temp[i]:
nums.clear()
nums.extend(temp[i:])
nums.extend(temp[:i])
print(nums)
return
nums.clear()
nums.extend(temp)

leetcode324的更多相关文章

  1. [Swift]LeetCode324. 摆动排序 II | Wiggle Sort II

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

  2. leetcode324 摆动排序II

      1. 首先考虑排序后交替插入 首尾交替插入,这种方法对于有重复数字的数组不可行: class Solution { public: void wiggleSort(vector<int> ...

  3. leetcode探索高级算法

    C++版 数组和字符串 正文 链表: 正文 树与图: 树: leetcode236. 二叉树的最近公共祖先 递归(先序) leetcode124二叉树最大路径和 递归 图: leetcode 547朋 ...

随机推荐

  1. arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf等的区别

    博客来之于:  http://www.veryarm.com/296.html 命名规则: 交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi] arch - ...

  2. ES6必知必会 (二)—— 字符串和函数的拓展

    字符串的拓展 1.ES6为字符串添加了遍历器接口,因此可以使用for...of循环遍历字符串 2.字符串新增的 includes().startsWith().endsWidth() 三个方法用于判断 ...

  3. WPF 中对启动参数的处理

    /// <summary>    /// Interaction logic for App.xaml    /// </summary>    public partial ...

  4. harbor helm 仓库使用

    harbor 已经支持helm 私服仓库了,还是比较方便的 安装 下载在线安装包 wget https://storage.googleapis.com/harbor-releases/release ...

  5. 转 web.config设置之system.webServer 详细介绍,为网站设置默认文档

    如何:为 IIS 7.0 配置 <system.webServer> 节2008-06-14 22:26http://technet.microsoft.com/zh-cn/sysinte ...

  6. Javascript Array 方法整理

    Javascript Array 方法整理 Javascript 数组相关方法 说明 大多数其它编程语言不允许改变数组大小,越界访问索引会报错,但是 javascript不会报错,不过不建议直接修改a ...

  7. SPA页面缓存再优化二

    部署到线上的步骤: 拿到打包之后的文件,删除服务器上的文件,再放上去的. 测试1: 更改js文件,删除并上传新包. 额外发现1:如果用户在上传期间,仍然在系统之内,此时即使将服务器上的包删除掉,用户不 ...

  8. ORACLE设置密码无过期

    适用于ORACLE11G //获取用户所属的profile SELECT username,PROFILE FROM dba_users;//查看profile的密码有效期 默认是180天SELECT ...

  9. 【python】break和continue

    break:跳出循环 ,continue:停止当前循环,进入下一次循环,但为跳出循环. passwdList=["123","456"] valid = Fal ...

  10. CentOS6.5 搭建在线yum源

    CentOS6.5 搭建在线yum源 发布时间:  2017-04-21 浏览次数:  611 下载次数:  1  问题描述 尽管有很多的免费镜像提供yum源服务,但是还是有必要建立自己的yum服务器 ...