280. 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]
.
链接: http://leetcode.com/problems/wiggle-sort/
题解:
Wiggle排序数组。按照题意写就可以了。 还可以简化,要多学习Stefan的代码。
Time Complexity - O(n), Space Complexity - O(1)
public class Solution {public void wiggleSort(int[] nums) {for(int i = 1; i < nums.length; i++) {if(i % 2 == 1) {if(nums[i] < nums[i - 1]) {swap(nums, i);}} else {if(i != 0 && nums[i] > nums[i - 1]) {swap(nums, i);}}}}private void swap(int[] nums, int i) {int tmp = nums[i - 1];nums[i - 1] = nums[i];nums[i] = tmp;} }
二刷:
方法和一刷一样。在i % 2 == 1或者 == 0的时候作交换的判断,交换完毕以后仍然保持这是一个本地化操作就可以了。交换的时候是用 i和 i - 1来交换
Java:
Time Complexity - O(n), Space Complexity - O(1)
public class Solution {public void wiggleSort(int[] nums) {if (nums == null || nums.length == 0) {return;}for (int i = 1; i < nums.length; i++) {if (i % 2 == 1) {if (nums[i] < nums[i - 1]) {swap(nums, i);} } else {if (nums[i] > nums[i - 1]) {swap(nums, i);}}}}private void swap(int[] nums, int i) {int tmp = nums[i - 1];nums[i - 1] = nums[i];nums[i] = tmp;} }
三刷:
跟前面一样,也是直接编写。
Java:
public class Solution {public void wiggleSort(int[] nums) {if (nums == null || nums.length < 2) return;for (int i = 1; i < nums.length; i++) {if ((i % 2 == 0 && nums[i] > nums[i - 1]) || (i % 2 == 1 && nums[i] < nums[i - 1])) {int tmp = nums[i];nums[i] = nums[i - 1];nums[i - 1] = tmp;} }} }
Reference:
https://leetcode.com/discuss/57113/java-o-n-solution
https://leetcode.com/discuss/57206/java-o-n-10-lines-consice-solution
https://leetcode.com/discuss/60824/java-python-o-n-time-o-1-space-solution-3-lines
https://leetcode.com/discuss/57118/easy-code-of-python
转载于:https://www.cnblogs.com/yrbbest/p/5035540.html
280. Wiggle Sort相关推荐
- 280. Wiggle Sort
最后更新 二刷 这个题做得真蠢.上来想的复杂了,想的是quick sort之类的,然后一个一个交换. 实际上直接交换就行..没啥特别的. 回头看一刷也是同样的思考过程= =宿命论啊.. Time: O ...
- [Leetcode] Wiggle Sort 摇摆排序
Wiggle Sort Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= ...
- C++Wiggle Sort摆动排序的实现算法(附完整源码)
C++Wiggle Sort摆动排序的实现算法 C++Wiggle Sort摆动排序的实现算法完整源码(定义,实现,main函数测试) C++Wiggle Sort摆动排序的实现算法完整源码(定义,实 ...
- 【LeetCode 剑指offer刷题】查找与排序题14:Wiggle Sort(系列)
[LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) Wiggle Sort II Given an unsorted array nums, reorder it su ...
- 324. Wiggle Sort II
/** 324. Wiggle Sort II* 2016-7-7 by Mingyang* 我想利用I的思路,设立一个list,sort以后从头尾分别加,但是遇到1122233就不行了* 因为这里是 ...
- LeetCode Wiggle Sort II(快排)
问题:给出一个无序数组,将它重新排列成nums[0]<nums[1]>nums[2]<nums[3]... 思路:将无序数组排序后,从中间及最后下标开始相间的填入值. 具体代码参考: ...
- 324. Wiggle Sort II | 324. 摆动排序 II(降序穿插)
题目 https://leetcode.com/problems/wiggle-sort-ii/submissions/ 题解 没有一次想到正确的方法,是在 WA 的测试用例的提示下,一点一点修正,才 ...
- [Swift]LeetCode324. 摆动排序 II | Wiggle Sort II
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- LeetCode Wiggle Sort II
1232131 转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/10936707.html
最新文章
- 项目经理常扮演的角色
- 阿里巴巴java开发手册学习
- java ac自动机_如何使用Java实现AC自动机全文检索实例
- 电子计算机专业vs土木工程专业,最难学十大工科专业 不想累成狗就别去(高薪)...
- JNPF开发平台3.3企业版框架 力软敏捷开发框架源码7.0.6旗舰版
- 初识内存控制器和SDRAM【一文了解】
- [Transformer]SPViT:Pruning Self-attentions into Convolutional Layers in Single Path
- 高考数学必考知识点数学高考常考考点
- Running “flutter pub get“ in xxx... 报错: Git error 443
- CSS backdrop-filter 滤镜 毛玻璃效果
- qq iphone for android,QQ for iPhone/Android v8.2.8 正式版发布
- Malcolm的新书:Outliers
- Android触控基础:MotionEvent
- 控制系统稳态误差(静态误差)分析
- 那些裸辞的人后来都怎么样了?
- sql触发器Tigger
- SQL Server数据库实操 第二波 集合查询、datepart()
- MATLAB时间序列2(ARIMA,季节性序列及其预报)------2019/8/14
- 城市公交线路查询系统mysql_基于Java环境下的城市公交查询系统设计与实现毕业论文+开题报告+答辩PPT+演示视频+设计源码+Mysql文件...
- 公众平台新增修改文章错别字功能 每篇文章允许被修改一次仅限正文内五个字...