LeetCode #324 Wiggle Sort II
来源:互联网 发布:淘宝一元秒杀怎么付款 编辑:程序博客网 时间:2024/06/16 05:02
Problem Description
- Given an unsorted array nums, reorder it such that nums[0] < nums[1] > nums[2] < nums[3]….
- Example:
- (1) Given nums = [1, 5, 1, 1, 6, 4], one possible answer is [1, 4, 1, 5, 1, 6].
- (2) Given nums = [1, 3, 2, 2, 3, 1], one possible answer is [2, 3, 1, 3, 1, 2].
- Note:
- You may assume all input has valid answer.
- Follow Up:
- Can you do it in O(n) time and/or in-place with O(1) extra space?
Some Details
- 巧法解题
Solution
这是一道细节要思考清楚的难ac题目,有令人沮丧的O(n)O(1)做法(姿势不对速度远比nlgn慢)。 当时切题花了数小时,但其糟糕的结果让我直接放弃了书写该题题解。 现如今近两个月过去细节不清,先放于此。 于寒假会重新切此题,因为我尚且不明白自己的O(n)做法问题出在哪里。
Code
//这是一个较为显然的nlgn做法class Solution {public: vector<int>nums; void qsort(int l,int r) { int i,j,t,mid; i=l; j=r; mid=nums[(l+r)/2]; while (i<=j) { while (i<r && nums[i]>mid) i++; while (l<j && nums[j]<mid) j--; if (i<=j) { t=nums[i]; nums[i]=nums[j]; nums[j]=t; i++; j--; } } if (i<r) qsort(i,r); if (l<j) qsort(l,j); } void wiggleSort(vector<int>& num) { int i,n,mid; n=num.size(); nums=num; mid=(n+1)/2-1; qsort(0,n-1); i=mid-1; while (i>=0 && nums[i]==nums[mid]) i--; for (int j=0;j<i;j++) if (nums[j]==nums[mid]) swap(nums[j],nums[i--]); i=mid+1; while (i<n && nums[i]==nums[mid]) i++; for (int j=n-1;j>i;j--)if (nums[j]==nums[mid]) swap(nums[j],nums[i++]); vector<int> a=nums; for (i=0;i<n;i++) { if (i % 2==0) a[i]=nums[(i+(n|1)-1)/2]; else a[i]=nums[(i-1)/2]; } for (i=0;i<n;i++) num[i]=a[i]; }};
0 0
- [LeetCode 324] Wiggle Sort II
- leetcode-Wiggle Sort II-324
- LeetCode[324] Wiggle Sort II
- LeetCode #324 Wiggle Sort II
- leetcode:sort:Wiggle Sort II(324)
- leetcode Wiggle Sort II
- LeetCode Wiggle Sort II
- leetcode Wiggle Sort II
- Leetcode Wiggle Sort II
- Leetcode Wiggle Sort II
- LeetCode: Wiggle Sort II
- LeetCode -- Wiggle Sort II
- Leetcode Wiggle Sort and Wiggle Sort II
- leetcode之Wiggle Sort II
- [leetcode] - 324. Wiggle Sort II
- [LeetCode]324. Wiggle Sort II
- leetcode 324. Wiggle Sort II
- LeetCode 324. Wiggle Sort II
- MyBatis框架的返回结果问题
- 程序员面试金典: 9.9 递归和动态规划 9.2机器人走路的方式
- 安装了opencv3.0.0 出现一些宏错误
- C/C++中extern关键字详解
- 数据结构
- LeetCode #324 Wiggle Sort II
- SSH整合报错:找不到元素 'beans' 的声明
- 两种树形菜单结构互相转换
- Spring事务配置的五种方式
- hadoop基础知识
- matlab 使用一个figure窗口打开多个fig文件
- 开博声明
- jsTree ajax 获取json数据加载树
- eclipse---配置,解决The superclass "javax.servlet.http.HttpServlet" was not found on the Java