정수 목록이 있다고 가정하면 다음과 같이 목록을 정렬해야 합니다. -
-
첫 번째 요소는 최대값입니다.
-
두 번째 요소는 최소입니다.
-
세 번째 요소는 두 번째 최대값입니다.
-
네 번째 요소는 두 번째 최소값입니다.
등등.
따라서 입력이 [6,3,10,4]와 같으면 출력은 [10, 3, 6, 4]
가 됩니다.이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
ret 배열 정의
-
배열 번호 정렬
-
j :=숫자 크기 - 1
-
나는 :=0
-
나는 <=j, 하는 동안 −
-
ret
끝에 nums[j] 삽입 -
(j를 1만큼 감소)
-
i <=j이면 -
-
ret
끝에 nums[i] 삽입 -
(i를 1씩 증가)
-
-
-
리턴 렛
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
#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