c++算法题-时间/空间复杂度

力扣题目-最长公共前缀: 关于时间复杂度和空间复杂度方面的思考

题目如下:

c++算法题-时间/空间复杂度_第1张图片

 见如下两个题解的区别:

①时间0ms, 内存9MB

c++算法题-时间/空间复杂度_第2张图片

c++算法题-时间/空间复杂度_第3张图片

②时间4ms, 内存8.9MB

c++算法题-时间/空间复杂度_第4张图片

c++算法题-时间/空间复杂度_第5张图片 

在解释前, 先放出上述题解中的vector.size()函数的底层代码, 该函数简单来说, 就是在得到自身容器对象后, 用尾指针的坐标减去头指针的坐标得到容器的长度

解释如下:

在②题解中, 直接在for循环中使用size()函数作为循环结束的临界值, 导致在循环过程中不断调用此函数计算长度, 使程序运行时间大大加长.

所以①题解中, 直接把size()计算结果放入一个新创建的内存(int 4个字节)中, 这样在for循环中就少去了多次计算, 虽然比②题解多了数个字节的内存消耗, 但是运行时间从4ms变成0ms, 这是必要的!

你可能感兴趣的:(时间/空间复杂度,c++,算法)