मान लीजिए कि हमारे पास एक अवर्गीकृत सरणी संख्या है, हमें इसे इस तरह पुनर्व्यवस्थित करना होगा कि nums[0]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
एक सरणी x बनाएं, जिसमें अंकों के समान तत्व हों
सॉर्ट x सरणी
i :=x – 1, j:=का आकार (x – 1 का आकार)/2 और n :=nums array का आकार
l के लिए 0 से n – 1 की सीमा में, प्रत्येक चरण में l को 2 से बढ़ाएँ
अंक [एल]:=एक्स [जे]
j को 1 से घटाएं
1 से n - 1 की सीमा में l के लिए प्रत्येक चरण में l को 2 से बढ़ाएँ
अंक [एल] :=x[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:
void wiggleSort(vector<int>& nums) {
vector <int> x(nums);
sort(x.begin(), x.end());
int i = x.size() - 1 ;
int j = (x.size() - 1)/2;
int n = nums.size();
for(int l = 0; l < n; l +=2){
nums[l] = x[j--];
}
for(int l = 1; l < n; l +=2){
nums[l] = x[i--];
}
}
};
main(){
vector<int> v = {1,5,1,1,6,4};
Solution ob;
(ob.wiggleSort(v));
print_vector(v);
}
इनपुट
[1,5,1,1,6,4]
आउटपुट
[1, 6, 1, 5, 1, 4, ]