ধরুন আমাদের কাছে সংখ্যার একটি অ্যারে আছে যাতে ঠিক তিনটি উপাদানের যেকোন ফ্রিকোয়েন্সি থাকে - 1, 0 এবং 1 এইরকম −
const arr = [1, 1, 0, -1, 1, 0, -1, 1, 0, 0, 1];
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা এমন একটি অ্যারেতে নেয়। ফাংশনটি কেবলমাত্র এই বিশেষ অ্যারেটিকে যথাস্থানে সাজাতে হবে, মানগুলি সঞ্চয় করার জন্য কোনও অতিরিক্ত অ্যারে ব্যবহার না করে৷
একমাত্র শর্ত হল আমাদের ফাংশনটি একটি লিনিয়ার টাইম ফাংশন হওয়া উচিত (শুধু একটি পুনরাবৃত্তি ব্যবহার করে)।
উদাহরণ
নিম্নলিখিত কোড -
const arr = [1, 1, 0, -1, 1, 0, -1, 1, 0, 0, 1];
const sortSpecialArray = (arr = []) => {
const swap = (a, b) => {
let middle = arr[a]
arr[a] = arr[b]
arr[b] = middle
};
let left = 0;
let middle = 0;
let right = arr.length-1;
while(middle <= right){
if(arr[middle] === -1){
swap(left++, middle++);
}else if(arr[middle] === 0){
middle++;
}else if(arr[middle] === 1){
swap(right--, middle);
}
};
};
sortSpecialArray(arr);
console.log(arr); আউটপুট
নিম্নোক্ত কনসোল আউটপুট -
[ -1, -1, 0, 0, 0, 0, 1, 1, 1, 1, 1 ]