मान लीजिए हमारे पास पूर्णांकों की एक सूची nums है, हमें सूची को इस तरीके से सॉर्ट करना है:
- पहला तत्व अधिकतम हो
- दूसरा तत्व न्यूनतम हो
- तीसरा तत्व दूसरा अधिकतम हो
- चौथा तत्व दूसरा न्यूनतम हो
और इसी तरह।
उदाहरण के लिए, यदि इनपुट है [6, 3, 10, 4], तो आउटपुट [10, 3, 6, 4] होगा।
समाधान दृष्टिकोण
इस समस्या को हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
- एक सरणी
retपरिभाषित करें। numsसरणी को सॉर्ट करें।j := nums का आकार - 1i := 0while i <= j:nums[j]कोretके अंत में डालेंjको 1 से घटाएं- यदि
i <= j:nums[i]कोretके अंत में डालेंiको 1 से बढ़ाएं
retलौटाएं।
C++ कार्यान्वयन
#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;
}
};
int main() {
Solution ob;
vector<int> v = {6, 3, 10, 4};
print_vector(ob.solve(v));
return 0;
}
इनपुट
{6, 3, 10, 4}
आउटपुट
10, 3, 6, 4