C++ 中从大到小排序


假设我们有一个整数列表 nums,我们需要按照以下方式对列表进行排序:

  • 第一个元素是最大值

  • 第二个元素是最小值

  • 第三个元素是第二大值

  • 第四个元素是第二小值

以此类推。

因此,如果输入是 [6,3,10,4],则输出将是 [10, 3, 6, 4]

为了解决这个问题,我们将遵循以下步骤:

  • 定义一个数组 ret

  • 对数组 nums 进行排序

  • j := nums 的大小 - 1

  • i := 0

  • 当 i <= j 时,执行以下操作:

    • 将 nums[j] 插入 ret 的末尾

    • (将 j 减 1)

    • 如果 i <= j,则:

      • 将 nums[i] 插入 ret 的末尾

      • (将 i 加 1)

  • 返回 ret

让我们来看下面的实现,以便更好地理解:

示例

在线演示

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
   public:
   vector<int> solve(vector<int> & nums) {
      vector<int> ret;
      sort(nums.begin(), nums.end());
      int j = nums.size() - 1;
      int i = 0;
      while (i <= j) {
         ret.push_back(nums[j]);
         j--;
         if (i <= j) {
            ret.push_back(nums[i]);
            i++;
         }
      }
      return ret;
   }
};
main() {
   Solution ob;
   vector<int> v = {6,3,10,4};
   print_vector(ob.solve(v));
}

输入

{6,3,10,4}

输出

10, 3, 6, 4

更新于:2020年9月2日

浏览量:637

启动您的职业生涯

完成课程获得认证

开始
广告
© . All rights reserved.