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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP