假设我们有一个整数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