惰性初始模式 Lazy Initialization

惰性初始模式 Lazy Initialization

wiki百科释义

你的代码要分配一个boolean的数组,分配内存所用时间复杂度是O(1),但是分配完后,数组的内容是任意值。已知,数组很大,我们不希望用遍历的方式初始化该数组,而是采用惰性初始化模式。

问题:

Design a deterministic scheme by which reads and writes to an uninitialized arrayA can be made in O(1) time. You may use O(n) additional storage; reads to uninitialized entry should return 0.

解答思路:

用变量t来表示当前A中已经初始化了的元素的个数。当对A中的某个元素,比如第3号元素,初始化时,就把3填入S[t]中,然后在P[t]填入t,最后t++。也就是说,S是A中已经初始化过的元素的标号,P中是A中元素初始化的顺序。

假如现在要读取A[4],

if P[4]>t,

说明A[4]还没被初始化;

else if P[4]<=t,

if  S[P[4]]==4,

说明A[4]已经被初始化过;

else

说明A[4]未被初始化;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值