力扣题目-最长公共前缀: 关于时间复杂度和空间复杂度方面的思考
题目如下:
见如下两个题解的区别:
①时间0ms, 内存9MB
②时间4ms, 内存8.9MB
在解释前, 先放出上述题解中的vector.size()函数的底层代码, 该函数简单来说, 就是在得到自身容器对象后, 用尾指针的坐标减去头指针的坐标得到容器的长度
解释如下:
在②题解中, 直接在for循环中使用size()函数作为循环结束的临界值, 导致在循环过程中不断调用此函数计算长度, 使程序运行时间大大加长.
所以①题解中, 直接把size()计算结果放入一个新创建的内存(int 4个字节)中, 这样在for循环中就少去了多次计算, 虽然比②题解多了数个字节的内存消耗, 但是运行时间从4ms变成0ms, 这是必要的!