मान लीजिए कि हमारे पास एक संख्या n है, हमें n से छोटी या उसके बराबर सबसे बड़ी संख्या ज्ञात करनी है, जहाँ सभी अंक घटते नहीं हैं।
इसलिए, यदि इनपुट n =221 जैसा है, तो आउटपुट 199 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- अंक:=n में सभी अंकों वाली एक सूची
- बाध्य:=शून्य
- अंकों के श्रेणी आकार में - 1 से 0 तक के लिए, करें
- यदि अंक [i] <अंक [i - 1], तो
- बाध्य:=मैं
- अंक[i - 1] :=अंक[i - 1] - 1
- यदि बाउंड शून्य नहीं है, तो
- अंकों के आकार की सीमा में i के लिए, करें
- अंक[i] :=9
- अंकों के आकार की सीमा में i के लिए, करें
- यदि अंक [i] <अंक [i - 1], तो
- एक संख्या बनाने और उसे वापस करने के लिए प्रत्येक अंक को अंकों में मिलाएं
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण कोड
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