def minChunks(totalPackets, uploadedChunks):
if len(uploadedChunks) == 0:
return bin(totalPackets).count("1")
uploadedChunks.sort(key = lambda x: x[0])
remainingChunk = []
for i in range(1, len(uploadedChunks)):
remainingChunk.append(uploadedChunks[i][0] - 1 - uploadedChunks[i-1][1])
if uploadedChunks[0][0] != 1:
remainingChunk.append(uploadedChunks[0][0] - 1)
if uploadedChunks[-1][1] != totalPackets:
remainingChunk.append(totalPackets - uploadedChunks[-1][1])
minChunks = 0
for i in remainingChunk:
minChunks += bin(i).count("1")
return minChunks
# minChunks(10, [[1, 2], [9, 10]])
# minChunks(18, [[9, 17]])
from collections import Counter
def maximumDistinct(a, b, k):
n_redundant = sum([i-1 for i in Counter(a).values() if i >= 1])
n_candidates = len(set(b) - set(a))
return len(set(a)) + min((n_redundant, n_candidates, k))
# maximumDistinct([2, 2, 3, 4, 2], [1, 3, 2, 4, 1], 1)