Wiggle Sort I && II
2016-06-20 21:33
288 查看
题目大意:
Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums[2] <= nums[3]....
For example, given
分析:
就是要求将一个数组排列成一个摇摆排序,其实通过简单的交换就可以实现(注意这里题目条件当中nums[0] <= nums[1],如果没有这个条件,是没有办法通过交换实现的)
具体思路看代码好了,如下:
上述代码时间复杂度为O(n),空间复杂度为O(1)
II是对I的延伸,题目链接:https://leetcode.com/problems/wiggle-sort-ii/
解题思路:(暂时还没有想到好的解决方法)
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].
分析:
就是要求将一个数组排列成一个摇摆排序,其实通过简单的交换就可以实现(注意这里题目条件当中nums[0] <= nums[1],如果没有这个条件,是没有办法通过交换实现的)
具体思路看代码好了,如下:
class Solution { public: void wiggleSort(vector<int>& nums) { int n = nums.size(); for(int i=1; i<n; ++i) { if((i % 2== 1 && nums[i] < nums[i-1]) || (i % 2 == 0 && nums[i] > nums[i-1])) { swap(nums[i], nums[i-1]); } } } private: void swap(int &a, int &b) { int temp = a; a = b; b = temp; } };
上述代码时间复杂度为O(n),空间复杂度为O(1)
II是对I的延伸,题目链接:https://leetcode.com/problems/wiggle-sort-ii/
解题思路:(暂时还没有想到好的解决方法)
相关文章推荐
- JSP指令与动作元素
- python string
- 函数可重入性及编写规范
- 羽毛球双打比赛中两位运动员谁来发球以及如何换位?
- 欢迎使用CSDN-markdown编辑器
- 界面编程与视图(View)组件
- ORA-01652:无法通过128(在表空间ZLTOOLSTMP中)扩展 temp 段
- 考查嵌入式C开发人员的最好的0x10道题
- git一个比较好的学习网址
- 随机搜索算法之遗传算法简介
- 论调用约定
- X二进制后的1的个数
- 提高项目4-求阶乘函数
- 拉格朗日插值法
- NodeMCU文档中文翻译 5 上传代码
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组
- 登山-C#-对密码进行加密存储
- fiddler 抓包工具简介
- 购物车模块测试
- [不错]AI是什么 将带我们去哪儿?