C ++中的大到小排序
假设我们有一个整数nums列表,我们必须以这种方式对列表进行排序-
第一个元素最大
第二要素最少
第三个元素是第二个最大值
第四个元素是第二个最小值
等等。
因此,如果输入类似于[6,3,10,4],则输出将为[10、3、6、4]
为了解决这个问题,我们将遵循以下步骤-
定义数组ret
对数组数字进行排序
j:=nums的大小-1
i:=0
当我<=j时,-
在ret的末尾插入nums[i]
(将i增加1)
在ret的末尾插入nums[j]
(将j减1)
如果i<=j,则-
返回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