classSolution: defmissingInteger(self, nums: List[int]) -> int: cnt = set(nums) psum = nums[0] for i inrange(1, len(nums)): if nums[i] - nums[i - 1] == 1: psum += nums[i] else: break x = psum while x in nums: x += 1 return x
classSolution: def minOperations(self, nums: List[int], k: int) -> int: n =len(nums) ans = 0 for i in range(21): cnt = sum(1for x in nums if x & (1 << i) != 0) if k & (1 << i) != 0: if cnt & 1 == 0: ans += 1 else: if cnt & 1 != 0: ans += 1 return ans
100159. 使 X 和 Y 相等的最少操作次数
给你两个正整数 x 和 y 。
一次操作中,你可以执行以下四种操作之一:
如果 x 是 11 的倍数,将 x 除以 11 。
如果 x 是 5 的倍数,将 x 除以 5 。
将 x 减 1 。
将 x 加 1 。
请你返回让 x 和 y 相等的 最少 操作次数。
示例 1:
输入:x = 26, y = 1 输出:3 解释:我们可以通过以下操作将 26 变为 1 : 1. 将 x 减 1 2. 将 x 除以 5 3. 将 x 除以 5 将 26 变为 1 最少需要 3 次操作。
示例 2:
输入:x = 54, y = 2 输出:4 解释:我们可以通过以下操作将 54 变为 2 : 1. 将 x 加 1 2. 将 x 除以 11 3. 将 x 除以 5 4. 将 x 加 1 将 54 变为 2 最少需要 4 次操作。
示例 3:
输入:x = 25, y = 30 输出:5 解释:我们可以通过以下操作将 25 变为 30 : 1. 将 x 加 1 2. 将 x 加 1 3. 将 x 加 1 4. 将 x 加 1 5. 将 x 加 1 将 25 变为 30 最少需要 5 次操作。
classSolution: defminimumOperationsToMakeEqual(self, x: int, y: int) -> int: @cache defdp(x): if x <= y: return y - x res = x - y res = min(res, dp(x // 11) + x % 11 + 1) res = min(res, dp(x // 11 + 1) + 11 - x % 11 + 1) res = min(res, dp(x // 5) + x % 5 + 1) res = min(res, dp(x // 5 + 1) + 5 - x % 5 + 1) return res return dp(x) classSolution: defminimumOperationsToMakeEqual(self, x: int, y: int) -> int: if x <= y: return y - x
classSolution: def numberOfPowerfulInt(self, start: int, finish: int, limit: int, s: str) -> int: @cache def dfs(i, is_limit, upper): if upper < int(s): return 0 if i == len(str(upper)): return1 t = str(upper) diff = len(t) - len(s) up = 9 if is_limit: up = int(t[i]) res = 0 if i < diff: for d in range(min(up, limit) + 1): res += dfs(i + 1, is_limit and d == up, upper) else: x = int(s[i - diff]) if x <= min(limit, up): res = dfs(i + 1, is_limit and x == up, upper) return res returndfs(0, True, finish) - dfs(0, True, start - 1)