一文带你彻底理解程序为什么会超时


一些同学可能对计算机运行的速度没有概念

可能就是感觉计算机运行速度应该会很快

那么我们在做算法题目的时候为什么会超时呢?

我们的计算机究竟1s可以计算多少次呢?

接下来我们来探讨一下这几个问题。

超时是怎么回事

在这里插入图片描述

大家刷leetcode时候应该都遇到过知一种错误是超时

也就是说程序运行的时间超过了规定的时间,而leetcode并没说程序运行了多久超时,也没有说超时时间具体是多少

一般现在判题系统的超时时间就是1s,其他OJ呢,例如POJ 或者ZOJ 超时时间都基本上都是1s

也就是用例数据输入后最多要1s内得到结果,leetcode 应该也是1s左右(leetcode上可能每道题限制会有所不同)。

下文为了方便讲解,暂定超时时间就是1s

接下来我们要知道我们的代码为什么会超时的

也就是如果我们写出了一个O(n)的算法 ,我们其实可以估算出来n是多大的时候,我们算法的执行之间就会超过1s

如果知道n的规模已经足够让O(n)的算法运行时间超过了1s,此时我们就应该考虑log(n)的解法

猜你喜欢

转载自blog.csdn.net/youngyangyang04/article/details/105323440