每日一题 2048. 下一个更大的数值平衡数(枚举)
2023-12-13 21:43:42
- 乍一看没什么想法,但它的 x 是有限的,而题目规定的数值平衡数的要求很严格,相对来说只有少部分数满足要求,所以想到了枚举的方法
- 通过寻找所有在范围内的全排列中满足数值平衡数的要求的数,找到最接近 n 的一个
- 官方给出的解法是直接从n+1开始一个个地寻找数值平衡数,代码更简洁,也更快,哭死
class Solution:
def nextBeautifulNumber(self, n: int) -> int:
l = []
ans = inf
def build(x, nums, deep):
nonlocal ans
cnt = 0
for i in range(1, 7):
if nums[i] == i or nums[i] == 0:
cnt += 1
if nums[i] > i or deep > 7 or nums[i] > 0 and i - nums[i] > 7 - deep:
return
if cnt == 6:
if x > n:
ans = min(ans, x)
l.append(x)
for i in range(1, 7):
nums[i] += 1
build(x + i * 10**deep, nums, deep + 1)
nums[i] -= 1
build(0, [0] * 7, 0)
return ans
文章来源:https://blog.csdn.net/qq_46636391/article/details/134892918
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!