ধরুন আমাদের কাছে পূর্ণসংখ্যার সংখ্যা এবং পূর্ণসংখ্যার মান a, b এবং c একটি সাজানো অ্যারে আছে। আমাদের অ্যারের প্রতিটি উপাদান x-এ f(x) =ax^2 + bx + c ফর্মের একটি দ্বিঘাত ফাংশন প্রয়োগ করতে হবে। এবং চূড়ান্ত অ্যারে অবশ্যই সাজানো ক্রমে হতে হবে।
সুতরাং, যদি ইনপুট হয় সংখ্যা =[-4,-2,2,4], a =1, b =3, c =5, তাহলে আউটপুট হবে [3,9,15,33]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
ফাংশন সংজ্ঞায়িত করুন f(), যা x, a, b, c −
নেয় -
রিটার্ন ax^2 + bx + c
-
প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -
-
n :=সংখ্যার আকার
-
শুরু :=0, শেষ :=n - 1
-
n
আকারের একটি অ্যারে রেট সংজ্ঞায়িত করুন -
যদি a>=0 হয়, তাহলে −
-
আরম্ভ করার জন্য i :=n - 1, যখন i>=0, আপডেট করুন (i 1 দ্বারা কম করুন), করুন −
-
x :=f(সংখ্যা[শুরু], a, b, c)
-
y :=f(সংখ্যা[শেষ], a, b, c)
-
যদি x> y, তাহলে −
-
(শুরু 1 দ্বারা বৃদ্ধি করুন)
-
ret[i] :=x
-
-
অন্যথায়
-
ret[i] :=y
-
(শেষ 1 দ্বারা হ্রাস করুন)
-
-
-
-
অন্যথায়
-
আরম্ভ করার জন্য i :=0, যখন i
-
x :=f(সংখ্যা[শুরু], a, b, c)
-
y :=f(সংখ্যা[শেষ], a, b, c)
-
যদি x
-
(শুরু 1 দ্বারা বৃদ্ধি করুন)
-
ret[i] :=x
-
-
অন্যথায়
-
ret[i] :=y
-
(শেষ 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:
int f(int x, int a, int b, int c){
return a * x * x + b * x + c;
}
vector<int< sortTransformedArray(vector<int<& nums, int a, int b, int c) {
int n = nums.size();
int start = 0;
int end = n - 1;
vector<int< ret(n);
if (a >= 0) {
for (int i = n - 1; i >= 0; i--) {
int x = f(nums[start], a, b, c);
int y = f(nums[end], a, b, c);
if (x > y) {
start++;
ret[i] = x;
}
else {
ret[i] = y;
end--;
}
}
}
else {
for (int i = 0; i < n; i++) {
int x = f(nums[start], a, b, c);
int y = f(nums[end], a, b, c);
if (x < y) {
start++;
ret[i] = x;
}
else {
ret[i] = y;
end--;
}
}
}
return ret;
}
};
main(){
Solution ob;
vector<int< v = {-4,-2,2,4};
print_vector(ob.sortTransformedArray(v, 1, 3, 5));
} ইনপুট
{-4,-2,2,4}, 1, 3, 5 আউটপুট
[3, 9, 15, 33, ]