程序查找不大于n的数字,其中python中所有数字均不减

假设我们有一个数字n,我们必须找到小于或等于n的最大数字,其中所有数字都不减。

因此,如果输入类似于n = 221,则输出将为199。

为了解决这个问题,我们将按照以下步骤操作:

  • digits:=包含所有数字的列表

  • 绑定:= null

  • 对于i的数字范围大小-1降至0,请执行

    • 因为我在与数字大小有关的范围内

    • 位数[i]:= 9

    • 绑定:=我

    • digits [i-1]:= digits [i-1]-1

    • 如果digits [i] <digits [i-1],则

    • 如果bound不为null,则

    • 将每个数字连起来形成一个数字并将其返回

    让我们看下面的实现以更好地理解:

    范例程式码

    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
    猜你喜欢