lintcode 508.Wiggle Sort

2021年09月15日 阅读数:1
这篇文章主要向大家介绍lintcode 508.Wiggle Sort,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

题目:数组

LintCode 508. 摆动排序

给你一个没有排序的数组,请将原数组就地从新排列知足以下性质ide

nums[0] <= nums[1] >= nums[2] <= nums[3]....

方案:spa

 1 class Solution {
 2 public:
 3     /*
 4     * @param nums: A list of integers
 5     * @return: nothing
 6     */
 7     void wiggleSort(vector<int> &nums) const {
 8         const int len = nums.size();
 9 
10         if (len < 2)
11         {
12             return;
13         }
14 
15         bool flag_query_min = true;
16         for (int i = 0; i < len; ++i)
17         {
18             int curr_idx = i;
19             for (int j = i+1; j < i + 3 && j < len; ++j)
20             {
21                 if (flag_query_min)
22                 {
23                     if (nums[j] < nums[curr_idx])
24                     {
25                         curr_idx = j;
26                     }
27                 }
28                 else
29                 {
30                     if (nums[j] > nums[curr_idx])
31                     {
32                         curr_idx = j;
33                     }
34                 }
35             }
36 
37             if (curr_idx != i)
38             {
39                 std::swap(nums[i], nums[curr_idx]);
40             }
41 
42             flag_query_min = !flag_query_min;
43         }
44     }
45 };

//z 2018-01-16 23:59:30 L.349'30    T2283528791.K.F2338414085[T1,L15,R1,V2]code


@IS2120#CNBLOGS.T2169364049[T1,L65,R1,V259]:备忘
$ € ₤ ₭ ₪ ₩ ₮ ₦ ₱ ฿ ₡ ₫ ﷼ ¥ ﷼ ₫ ₡ ฿ ₱ ₦ ₮ ₩ ₪ ₭ ₤ € $