关于LogTrick的知识可以看看这篇博客
Leetcode 2411
class Solution:
def smallestSubarrays(self, nums: List[int]) -> List[int]:
n = len(nums)
res = []
for i in range(n):
res.append(1)
for i in range(n):
j = i - 1
while j >= 0 and (nums[j] | nums[i]) != nums[j]:
nums[j] |= nums[i]
res[j] = i - j + 1
j -= 1
return res
Leetcode 3097
class Solution:
def minimumSubarrayLength(self, nums: List[int], k: int) -> int:
l = len(nums)
res = l+1
if nums[l-1] >= k:
return 1
for i in range(l):
if nums[i] >= k:
return 1
j = i - 1
while j >= 0 and (nums[j] | nums[i]) != nums[j]:
nums[j] = nums[j] | nums[i]
if nums[j] >= k:
res = min(res,i-j+1)
j-=1
if res == l+1:
return -1
else:
return res
831

被折叠的 条评论
为什么被折叠?



