假设我们有一个数字n,我们必须找到所有数字均为奇数的下一个最接近的值。当有两个值与n最接近时,返回较大的一个。
因此,如果输入类似于n = 243,则输出将为199。
为了解决这个问题,我们将遵循以下步骤-
first_even:= -1
s:= n作为字符串
l:= s的大小
对于0到l范围内的i,执行
first_even:=我
从循环中出来
如果s [i]是偶数,则
如果first_even与-1相同,则
返回n
大:= 1 + s的数值[从索引0到i]
如果s [i]与“ 0”相同,则
小:= s的数值[从索引0到i]-11
小:= s的数值[从索引0到i]-1
如果s [i-1]与“ 1”相同,则
除此以外,
除此以外,
小:= s的数值[从索引0到i]-1
对于范围在i +1到l之间的i
大:=大串联“ 1”
小:=小串联“ 9”
大:=大数值,小:=小数值
d2:=大-n,d1:= n-小
如果d1 <d2,则
返回小
否则当d1> = d2时
大回报
让我们看下面的实现以更好地理解-
class Solution: def solve(self, n): first_even = -1 s = str(n) l = len(s) for i in range(l): if int(s[i]) % 2 == 0: first_even = i break if first_even == -1: return n big = str(int(s[: i + 1]) + 1) if s[i] == "0": if s[i - 1] == "1": small = str(int(s[: i + 1]) - 1) else: small = str(int(s[i : i + 1]) - 11) else: small = str(int(s[: i + 1]) - 1) for i in range(i + 1, l): big += "1" small += "9" big, small = int(big), int(small) d2 = big - n d1 = n - small if d1 < d2: return small elif d1 >= d2: return big ob = Solution()n = 243 print(ob.solve(n))
243
输出结果
199