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.