2917. 找出数组中的 K-or 值
class Solution: | |
def findKOr(self, nums: List[int], k: int) -> int: | |
# 位运算 | |
ans = 0 | |
# num < 2^31, i 是第 i 位 | |
for i in range(31): | |
cnt = 0; | |
# 所有数的二进制的第 i 位是否为 1 | |
for num in nums: | |
if num >> i & 1: | |
cnt += 1 | |
# 满足条件,加 | |
if cnt >= k: | |
ans |= 1 << i | |
return ans |
2918. 数组的最小相等和
class Solution: | |
def minSum(self, nums1: List[int], nums2: List[int]) -> int: | |
sum1 = sum(nums1) | |
cnt1 = nums1.count(0) | |
sum2 = sum(nums2) | |
cnt2 = nums2.count(0) | |
if cnt1==0 and cnt2==0 and sum1 != sum2 or cnt1==0 and sum2 + cnt2>sum1 or cnt2==0 and sum1 + cnt1>sum2: | |
return -1 | |
return max(sum1+cnt1, sum2+cnt2) |
2919. 使数组变美的最小增量运算数
class Solution: | |
def minIncrementOperations(self, nums: List[int], k: int) -> int: | |
#python3 注解,记忆化搜索,其他语言可用 visit [] 数组记录 | |
@cache | |
def dp(i:int, j:int) -> int: | |
if i < 0: | |
return 0 | |
# 不选 | |
res = dp(i-1, 0) + + max(k-nums[i], 0) | |
# 选 | |
if j < 2: | |
res = min(res, dp(i-1, j+1)) | |
return res | |
return dp(len(nums)-1, 0) |