ধরুন আমাদের একটি সংখ্যা n আছে, আমাদের সবচেয়ে বড় সংখ্যাটি n-এর থেকে ছোট বা সমান খুঁজে বের করতে হবে যেখানে সমস্ত সংখ্যা অ-হ্রাসমান।
সুতরাং, যদি ইনপুট n =221 এর মত হয়, তাহলে আউটপুট হবে 199।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
- সংখ্যা :=n-এ সমস্ত সংখ্যা সহ একটি তালিকা
- বাউন্ড :=শূন্য
- অঙ্কের পরিসরের আকার - 1 থেকে 0 পর্যন্ত, করুন
- যদি সংখ্যা[i]
- বাউন্ড :=i
- সংখ্যা[i - 1] :=সংখ্যা[i - 1] - 1
- যদি সংখ্যা[i]
- যদি bound null না হয়, তাহলে
- অঙ্কের আকারে আবদ্ধ রেঞ্জের জন্য, করুন
- সংখ্যা[i] :=9
- অঙ্কের আকারে আবদ্ধ রেঞ্জের জন্য, করুন
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ কোড
class Solution: def solve(self, n): digits = [int(x) for x in str(n)] bound = None for i in range(len(digits) - 1, 0, -1): if digits[i] < digits[i - 1]: bound = i digits[i - 1] -= 1 if bound: for i in range(bound, len(digits)): digits[i] = 9 return int("".join(map(str, digits))) ob = Solution() n = 221 print(ob.solve(n))
ইনপুট
221
আউটপুট
199