একটি সংখ্যা অ্যারে দেওয়া আছে। যদি অ্যারের শুরুতে এক বা একাধিক ০ (লিডিং জিরো) থাকে, তবে সেগুলো ইন-প্লেস (in-place) সরিয়ে ফেলতে হবে। অন্যথায় কিছুই করার দরকার নেই।
উদাহরণ
ইনপুট: [0, 0, 0, 14, 0, 63, 0]
আউটপুট: [14, 0, 63, 0] (শুধু শুরুতের ০ গুলো সরানো হয়েছে, মাঝপথের ০ রইলো)
উদাহরণ কোড
const arr = [0, 0, 0, 14, 0, 63, 0];
const removeLeadingZero = arr => {
while (arr.indexOf(0) === 0) {
arr.shift();
}
};
removeLeadingZero(arr);
console.log(arr);
আউটপুট
[ 14, 0, 63, 0 ]
ব্যাখ্যা
arr.indexOf(0) === 0চেক করে যে প্রথম উপাদান ০ কিনা।shift()দিয়ে প্রথম উপাদান সরানো হয় এবং অ্যারের দৈর্ঘ্য ১ কমে যায়।- লুপ চলতে থাকে যতক্ষণ পর্যন্ত প্রথম উপাদান ০ নয়।
- এই মেথডটি মূল অ্যারে মিউটেট করে (in-place)।
অপ্টিমাইজড সংস্করণ (O(n) টাইম)
shift() O(n) টাইম নেয়, তাই বড় অ্যারেতে এটি ধীর হতে পারে। দ্রুত পদ্ধতি:
const removeLeadingZeroFast = arr => {
let i = 0;
while (i < arr.length && arr[i] === 0) i++;
if (i > 0) arr.splice(0, i);
};
এখানে একবারেই সব লিডিং জিরো খুঁজে splice দিয়ে সরানো হয়।