簡體   English   中英

如何降低時序復雜度?

[英]How can I reduce timing complexity?

最近我從 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()

在這里,我使用除法降低了復雜性,因此您只需要迭代一次。

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()

請注意,我注釋了量化更新,但如果您想在 main() 的末尾獲得相同的精確量化值,您可以取消注釋它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM