leetcode 324. Wiggle Sort II【如何锯齿状排序】
2017-05-31 10:31
429 查看
Wiggle Sort II
Given an unsorted array
Example:
(1) Given
(2) Given
Note:
You may assume all input has valid answer.
这道题给了我们一个无序数组,让我们排成摆动数组,满足
首先应该对数组排序,然后再做调整。调整方法是找到数组中间的数,这样就把数组分成两段,从前一段末尾取一个数,从后一段末尾取一个数,一直这样取下去。这样取保证了第一个数小于第二个数,而第二个数大于第三个数
下面是C的写法
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.
这道题给了我们一个无序数组,让我们排成摆动数组,满足
nums[0] < nums[1] > nums[2] < nums[3]...。还举出例子。
首先应该对数组排序,然后再做调整。调整方法是找到数组中间的数,这样就把数组分成两段,从前一段末尾取一个数,从后一段末尾取一个数,一直这样取下去。这样取保证了第一个数小于第二个数,而第二个数大于第三个数
下面是C的写法
int cmp(const void *x,const void *y) {return *(int *)x-*(int *)y; } void wiggleSort(int* nums, int numsSize) { if(numsSize==0||nums==NULL) return ; qsort(nums,numsSize,sizeof(int),cmp); int x=ceil(numsSize*1.0/2.0); int *nums_1=(int *)malloc(sizeof(int)*numsSize); int j=numsSize-1,k=0,i=x-1; while(i>=0&&j>=x) { nums_1[k++]=nums[i--]; nums_1[k++]=nums[j--]; } if(i==0) { nums_1[k++]=nums[i--]; } for(i=0;i<numsSize;i++) nums[i]=nums_1[i]; }
相关文章推荐
- [LeetCode] 324. Wiggle Sort II 摆动排序 II
- LeetCode 324. Wiggle Sort II
- LeetCode 324. Wiggle Sort II
- [leetcode] - 324. Wiggle Sort II
- LeetCode 324. Wiggle Sort II(摇摆排序)
- LeetCode 324. Wiggle Sort II
- 324. Wiggle Sort II 摆动排序
- leetcode 324. Wiggle Sort II
- [LeetCode] Wiggle Sort II 摆动排序
- LeetCode *** 324. Wiggle Sort II (virtual indexing)
- LeetCode 324. Wiggle Sort II(摇摆排序)
- [leetcode] 324. Wiggle Sort II 解题报告
- leetcode 324. Wiggle Sort II
- LeetCode--324. Wiggle Sort II
- leetcode 324. Wiggle Sort II 摇摆排序
- [LeetCode] Sort Transformed Array 变换数组排序
- 【leetcode】已排序数组去重 II
- [LeetCode] Wiggle Sort 摆动排序
- LeetCode 148.Sort List 链表排序
- [LeetCode] Sort Colors 只有3个类型的排序