Как я могу уменьшить сложность синхронизации? - PullRequest
0 голосов
/ 10 апреля 2020

Недавно я перешел с java на python, поэтому я привык к длинным кодам. Интересно, как я могу уменьшить временную сложность приведенного ниже кода.

def main():

    n_ingri = int(input())
    ingri = [int(i) for i in input().split()][:n_ingri]
    quant = [int(i) for i in input().split()][:n_ingri]

    power_puff = 0
    count = 0

    terminate = True

    while terminate:
        for x in range(n_ingri):
            if ingri[x] <= quant[x]:
                count += 1
            else:
                break

        if count != n_ingri:
            terminate = False

        else :
            power_puff += 1 
            count = 0
            for x in range(n_ingri):
                quant[x] = quant[x] - ingri[x]

    print(power_puff)

main()

1 Ответ

0 голосов
/ 10 апреля 2020

Здесь я уменьшаю сложность, используя деление, так что вам нужно выполнить итерацию только один раз.

def main():
    n_ingri = int(input())
    ingri = [int(i) for i in input().split()][:n_ingri]
    quant = [int(i) for i in input().split()][:n_ingri]

    divs = [quant[i] // ingri[i] for i in range(n_ingri)]
    power_puff = min(divs)
    # Update quant so the final quant result is the same (uncomment if needed)
    # quant = [quant[i] - min_div*ingri[i] for i in range(n_ingri)]

    print(power_puff)

main()

Обратите внимание, что я комментирую обновление кванта, но вы можете раскомментировать его, если хотите получить те же точные значения кванта в конце основного ().

...