ধরুন আমাদের nums নামক একটি সাজানো বিন্যাস না করা অ্যারে আছে, আমাদের এটিকে যথাস্থানে এমনভাবে সাজাতে হবে যে nums[0] <=nums[1]>=nums[2] <=nums[3].... ইত্যাদি।
সুতরাং, যদি ইনপুটটি nums =[3,5,2,1,6,4] এর মত হয়, তাহলে আউটপুট হবে [3,5,1,6,2,4], অন্য কিছু উত্তর থাকতে পারে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
n :=সংখ্যার আকার
-
আরম্ভ করার জন্য i :=0, যখন i
-
যদি i জোড় হয় এবং nums[i]> nums[i+1] সত্য হয় অথবা i বিজোড় হয় এবং nums[i]> nums[i+1] মিথ্যা হয়, তাহলে
-
অদলবদল(সংখ্যা[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: void wiggleSort(vector<int<& nums) { int n = nums.size(); for(int i = 0; i < n - 1; i+=1){ if((i % 2 == 0) == ( nums[i] > nums[i + 1])){ swap(nums[i], nums[i + 1]); } } } }; main(){ vector<int< v = {3,5,2,1,6,4}; Solution ob; ob.wiggleSort(v); print_vector(v); }
ইনপুট
{3,5,2,1,6,4}
আউটপুট
[3, 5, 1, 6, 2, 4, ]