একটি পূর্ণসংখ্যা অ্যারে দেওয়া আছে। এটিকে নিম্নলিখিত প্যাটার্নে সাজাতে হবে:
- ১লা উপাদান: সর্বোচ্চ
- ২য় উপাদান: সর্বনিম্ন
- ৩য় উপাদান: ২য় সর্বোচ্চ
- ৪র্থ উপাদান: ২য় সর্বনিম্ন
- এবং এভাবেই চলতে থাকবে...
উদাহরণ
ইনপুট: [6, 3, 10, 4]
সোর্টেড: [3, 4, 6, 10]
আউটপুট: [10, 3, 6, 4]
অ্যালগরিদম
- অ্যারেটি সর্ট করুন।
- দুটি পয়েন্টার:
i = 0(শুরু),j = n-1(শেষ)। while (i <= j):nums[j]যোগ করুন,j--- যদি
i <= jহয়,nums[i]যোগ করুন,i++
C++ বাস্তবায়ন
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
vector<int> solve(vector<int>& nums) {
vector<int> ret;
sort(nums.begin(), nums.end());
int i = 0, j = nums.size() - 1;
while (i <= j) {
ret.push_back(nums[j--]);
if (i <= j)
ret.push_back(nums[i++]);
}
return ret;
}
};
int main() {
Solution ob;
vector<int> v = {6, 3, 10, 4};
auto res = ob.solve(v);
for (int x : res) cout << x << " ";
return 0;
}
সময় জটিলতা
O(n log n) - সর্টিং-এর কারণে। স্পেস O(n)।