ধরুন, আমাদের কাছে একটি নম্বরের অ্যারে আছে যেটিতে ঠিক তিনটি এলিমেন্ট -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 ]