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. jQuery prop() 方法

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. memsql 基本完全免费了

    一个很好的消息是memesql 从6.7 版本开始,对于用户来说已经可以免费使用了(ha 以及安全功能),只是目前有一个 限制是集群内存最大可以使用的是128G,但是一般来说已经够用. 参考资料 ht ...

  3. benthos 通过配置文件配置 stream 说明

    stream 模式,我们也可以通过配置文件进行配置 参考配置文件 input: type: http_server buffer: type: memory pipeline: threads: 4 ...

  4. streamsets 集成 cratedb 测试

    我们可以集成crate 到streamsets 中可以实现强大的数据导入,数据分析能力. 演示的是进行csv 文件的解析并输出到cratedb 环境使用docker && docker ...

  5. bat计算两个时间差

    这个是脚本代码[保存为etime.bat放在当前路径下即可: 免费内容: :etime <begin_time> <end_time> <return>rem 所测 ...

  6. EasyPHP-Devserver-17的坑位

    mysql登陆错误:error: 'Plugin '*2A8AF30E682613A2F1CE1E28BA11D8560B294DCE' is not loaded' http://stackover ...

  7. spring 注解列表

    table th:first-of-type { width: 15%; } table th:nth-of-type(2) { } 注解 作用 例子 @SuppressWarnings 忽略警告 类 ...

  8. Connection: keep-alive,Content-Length,Transfer-Encoding: chunked,Content-Encoding: gzip等

    Transfer-Encoding,是一个 HTTP 头部字段,字面意思是「传输编码」. 用来改变报文格式,它不但不会减少实体内容传输大小,甚至还会使传输变大,那它的作用是什么呢?下面进行介绍. HT ...

  9. gitlab怎么删除创建的项目

    在gitlab新建了一个项目,怎么将此项目删除呢?打开这个工程,点击右上角的“settings”拉到最下面,有个show them to me,点击~在下拉选项的最后,有个remove框,点击即可以彻 ...

  10. Vue 网络请求

    Vue网络请求,用的是vue-resource 1. 首先需要安装vue-resource npm install vue-resource 2. 安装好之后,会在package.json文件中自动加 ...