fix(posts): fetch daily from files
This commit is contained in:
parent
3d2ee97afe
commit
2bcc3f4675
9 changed files with 691 additions and 0 deletions
30
public/code/algorithms/leetcode-daily/msl-bitwise.py
Normal file
30
public/code/algorithms/leetcode-daily/msl-bitwise.py
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
def minimumSubarrayLength(self, nums, k):
|
||||
ans = sys.maxsize
|
||||
|
||||
largest = max(*nums, k)
|
||||
num_digits = floor((log(max(largest, 1))) / log(2)) + 1
|
||||
|
||||
counts = [0] * num_digits
|
||||
l = 0
|
||||
|
||||
def update(x, delta):
|
||||
for i in range(len(counts)):
|
||||
if x & 1:
|
||||
counts[i] += delta
|
||||
x >>= 1
|
||||
|
||||
def bitwise_or():
|
||||
return reduce(
|
||||
operator.or_,
|
||||
(1 << i if count else 0 for i, count in enumerate(counts)),
|
||||
0
|
||||
)
|
||||
|
||||
for r, num in enumerate(nums):
|
||||
update(num, 1)
|
||||
while l <= r and bitwise_or() >= k:
|
||||
ans = min(ans, r - l + 1)
|
||||
update(nums[l], -1)
|
||||
l += 1
|
||||
|
||||
return -1 if ans == sys.maxsize else ans
|
||||
Loading…
Add table
Add a link
Reference in a new issue