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