New Year Chaos

  • + 0 comments

    Python 3 O(n) solution: Utilized sorting and then a dictionary for quick lookups:

    def minimumBribes(q):
    
        chaos = ""
        maxNum = len(q)
        allBribes = 0
    
        # Create a dictionary to track the indices of elements in the queue
        index_map = {value: i for i, value in enumerate(q)}
    
        while maxNum > 0:
            indxMaxNum = index_map[maxNum]
            while maxNum - (indxMaxNum + 1) > 0:
                if maxNum - (indxMaxNum + 1) > 2:
                    chaos = "Too chaotic"
                    break
                q[indxMaxNum], q[indxMaxNum + 1] = q[indxMaxNum + 1], maxNum
    
                index_map[q[indxMaxNum]] = indxMaxNum
                index_map[q[indxMaxNum + 1]] = indxMaxNum + 1
    
                indxMaxNum= index_map[maxNum]
                allBribes += 1
            if chaos:
                break
            maxNum -= 1
        print("Too chaotic") if chaos != "" else print(allBribes)