ধরুন আমাদের একটি সংখ্যা 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