书中原题:
使用更多的空间来换取更少的运行时间存在的一个问题:初始化空间本身需要消耗大量的时间。说明如何设计一种技术,在第一次访问向量的项时将其初始化为0。你的方案应该尽可能的使用常量的时间进行初始化和向量访问,使用的额外空间应正比于向量的大小。因为该方法通过进一步增加空间来减少初始化时间,所以仅在空间很廉价、时间很宝贵且向量很稀疏的情况下才考虑使用。
书后的参考答案:
借助
借助于两个额外的n元向量from、to和一个整数top,我们就可以使用标示来初始化向量data[0...n-1]。如果元素data[i]已经初始化,那么from[i]<top并且to[from[i]]=i。因此,from是一个简单的标示,to和top一起确保了from中不会被写入内存里的随机内容,下图中的data的空白项未被初始化
一开始是比较懵逼的,看了答案更加逼。。。
浙公网安备 33010602011771号