[Leetcode] Wiggle Sort 摇摆排序
Wiggle Sort
Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums[2] <= nums[3]....
For example, given
nums = [3, 5, 2, 1, 6, 4]
, one possible answer is[1, 6, 2, 5, 3, 4]
.
排序法
复杂度
时间 O(NlogN) 空间 O(1)
思路
根据题目的定义,摇摆排序的方法将会很多种。我们可以先将数组排序,这时候从第3个元素开始,将第3个元素和第2个元素交换。然后再从第5个元素开始,将第5个元素和第4个元素交换,以此类推。就能满足题目要求。
代码
public class Solution {public void wiggleSort(int[] nums) {// 先将数组排序Arrays.sort(nums);// 将数组中一对一对交换for(int i = 2; i < nums.length; i+=2){int tmp = nums[i-1];nums[i-1] = nums[i];nums[i] = tmp;}}
}
交换法
复杂度
时间 O(N) 空间 O(1)
思路
题目对摇摆排序的定义有两部分:
如果i是奇数,
nums[i] >= nums[i - 1]
如果i是偶数,
nums[i] <= nums[i - 1]
所以我们只要遍历一遍数组,把不符合的情况交换一下就行了。具体来说,如果nums[i] > nums[i - 1], 则交换以后肯定有nums[i] <= nums[i - 1]。
代码
public class Solution {public void wiggleSort(int[] nums) {for(int i = 1; i < nums.length; i++){// 需要交换的情况:奇数时nums[i] < nums[i - 1]或偶数时nums[i] > nums[i - 1]if((i % 2 == 1 && nums[i] < nums[i-1]) || (i % 2 == 0 && nums[i] > nums[i-1])){int tmp = nums[i-1];nums[i-1] = nums[i];nums[i] = tmp;}}}
}
[Leetcode] Wiggle Sort 摇摆排序相关推荐
- C++Wiggle Sort摆动排序的实现算法(附完整源码)
C++Wiggle Sort摆动排序的实现算法 C++Wiggle Sort摆动排序的实现算法完整源码(定义,实现,main函数测试) C++Wiggle Sort摆动排序的实现算法完整源码(定义,实 ...
- LeetCode Wiggle Sort II(快排)
问题:给出一个无序数组,将它重新排列成nums[0]<nums[1]>nums[2]<nums[3]... 思路:将无序数组排序后,从中间及最后下标开始相间的填入值. 具体代码参考: ...
- LeetCode Wiggle Sort II
1232131 转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/10936707.html
- 【LeetCode 剑指offer刷题】查找与排序题14:Wiggle Sort(系列)
[LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) Wiggle Sort II Given an unsorted array nums, reorder it su ...
- 【排序】LeetCode 75. Sort Colors
LeetCode 75. Sort Colors Solution1: 参考自:<leetcode-cpp 答案> 由于0,1,2非常紧凑,首先想到计数排序(counting sort), ...
- LeetCode 148. Sort List--面试算法题--C++,Python解法
LeetCode 148. Sort List–面试算法题–C++,Python解法 LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结:LeetCode 所有题目总结 大 ...
- LeetCode 75. Sort Colors (python一次遍历,模拟三路快排)
LeetCode 75. Sort Colors (python一次遍历,模拟三路快排) 题目分析: 本题需要实现数字只包含0,1,2的排序,并且要求一次遍历. 由于只用把数字隔离开,很容易想到快排的 ...
- LeetCode Wiggle Subsequence(动态规划)
问题:给出一个数组,求波动序列的最大长度. 思路:方法一使用up(i)表示第i个元素是上升时最大长度,down(i)表示第i个元素是下降时最大长度.则有up(i)=max(down(j) +1, up ...
- redis 的使用 (sort set排序集合类型操作)
sort set排序集合类型 释义: sort set 是 string 类型的集合 sort set 的每个元素 都会关联一个 权 通过 权值 可以有序的获取集合中的元素 应用场合: 获取热门帖子( ...
最新文章
- 计算机背小学英语吗,小学英语课本点读电脑版
- alu是计算机中的什么东西,ALU,什么是ALU,ALU介绍--电子百科词库--科通芯城,IC及其他电子元器件交易型电商平台100%正品保证...
- 基于时间片轮转程序分析进程调度
- .net中不同的方法相同的结果
- 意外收获字节跳动内部资料,已开源
- spring RestTemplate用法详解
- Sublime 安装包时出现的 There are no packages available for installation
- LeetCode -- Sort List
- BRVAH(让RecyclerView变得更高效) (3)
- 【习题 6-5 UVA-1600】Patrol Robot
- 如何更改node.js的控制台字体颜色?
- x86架构应用如何向Arm架构低成本迁移
- 数字兆欧表的使用及安全注意事项
- matlab 符号计算,第3章 MATLAB符号计算
- 2014年最新810多套源码2.46GB免费一次性打包下载
- 共享文件夹w7和服务器系统区别,w7服务器怎样共享文件夹共享文件夹
- 11.16上海交大PMP试题每日一题
- C 懒虫小鑫 SDUT
- 5.3 三指针尺取法——【锻造兵器】
- iPhone管理软件iMazing 2.16.9激活密钥免费版百度网盘下载
热门文章
- java byte xml_Java XMLInputSource.setByteStream方法代码示例
- java数组中怎么去重_java数组去重怎么弄???大神来解
- ctypealpha php_php ctype函数中文翻译和示例
- Java学习总结:51(对象序列化)
- Java学习总结:47(打印流)
- JAVA 继承内存模型_Java内存模型
- JDK的安装与系统环境变量的配置
- 子div超出父div_菜鸟学 react props 子到父
- 卡巴斯基安全浏览器_卡巴斯基 for windows 全方位安全软件2021注册表清除版
- uniapp富文本兼容视频实现方案