Untitled

 avatar
unknown
plain_text
6 days ago
900 B
8
Indexable
def findMinSyncTime(total_servers: int, servers: list) -> int:
    
    if len(servers) <= 1:
        return 0
    
    n = len(servers)
    min_time = float('inf')
    
    sorted_servers = sorted(servers)
    
    for i in range(n):
        curr = sorted_servers[i]
        next_server = sorted_servers[(i + 1) % n]
        
        clockwise = (next_server - curr) if next_server > curr else (total_servers - curr + next_server)
        counterclockwise = total_servers - clockwise
        
        current_max = min(clockwise, counterclockwise)
        min_time = min(min_time, current_max)
    
    max_gap = 0
    for i in range(n):
        curr = sorted_servers[i]
        next_server = sorted_servers[(i + 1) % n]
        
        gap = (next_server - curr) if next_server > curr else (total_servers - curr + next_server)
        max_gap = max(max_gap, gap)
    
    return (max_gap + 1) // 2
Leave a Comment