ধরুন আমাদের কাছে সংখ্যার একটি তালিকা আছে যাকে nums of size n বলা হয় যেখানে তালিকার সমস্ত সংখ্যা ব্যবধানে উপস্থিত থাকে [1, n] কিছু উপাদান দুবার প্রদর্শিত হতে পারে যখন অন্যগুলি শুধুমাত্র একবার। আমাদের [1, n] থেকে এমন সমস্ত সংখ্যা খুঁজে বের করতে হবে যাতে সেগুলি তালিকায় নেই। আমাদেরকে ক্রমবর্ধমান ক্রমে সাজানো সংখ্যাগুলো ফেরত দিতে হবে। আমাদের এমন একটি সমাধান খুঁজে বের করার চেষ্টা করতে হবে যা রৈখিক সময় এবং ধ্রুবক স্থান নেয়।
সুতরাং, ইনপুট যদি [4, 4, 2, 2, 6, 6] এর মত হয়, তাহলে আউটপুট হবে [1, 3, 5]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- arr :=আকার সংখ্যা + 1 এর একটি অ্যারে, এবং 0 দিয়ে পূরণ করুন
- সংখ্যায় প্রতিটি i জন্য, করুন
- arr[i] :=arr[i] + 1
- অনুপস্থিত :=একটি নতুন তালিকা
- এর জন্য 0 থেকে arr এর আকারের মধ্যে, করুন
- যদি arr[i] 0 এর মত হয় এবং i 0 এর মত না হয়, তাহলে
- মিসিংয়ের শেষে i ঢোকান
- যদি arr[i] 0 এর মত হয় এবং i 0 এর মত না হয়, তাহলে
- ফেরত অনুপস্থিত
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, nums): arr = [0]*(len(nums)+1) for i in nums: arr[i] += 1 missing = [] for i in range(len(arr)): if arr[i] == 0 and i != 0: missing.append(i) return missing ob = Solution() print(ob.solve([4, 4, 2, 2, 6, 6]))
ইনপুট
[4, 4, 2, 2, 6, 6]
আউটপুট
[1, 3, 5]