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)
Yiming Zhang
Yiming Zhang
Quantitative Researcher Associate, JP Morgan