C++中数组初始化的问题

 我来答
求小宸舒诚
2019-03-13 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:29%
帮助的人:618万
展开全部
这句话是对的啊
可以看出两点:
题目重要2点
1:假设存在无穷大的空间,说明可以另外使用空间
2:复杂度O(1)。线性判断不可行。
解决方案1:
申请1个一样大的数组。
访问原数组时,先判断那个数组的位置是否为某个设定值,如果是则访问过,
反之则没访问过。
设原数组为
A[XXX],标记数组为
B[XXX]
访问
A[X
]前先判断
if(
B[
X
]
==
某个值
)
{
访问过
}
else
{
B[X
]
=
某个值
}
此方法有漏洞,新的标记数组也没有初始化。
若进行初始化复杂度则不保持O(1)
解决方案2:
此方法是完美方法
新建两个数组分别为From[XXX];
To[XXX]
初始化一个数字为
top
=
0;
访问任意一个A成员A[m]时都执行如下检查:
if(From[m]
<
top
&&
To[From[m]]
==
m)
{说明已经访问过该成员}
else
{
From[m]
=
top;
To[top]
=
m;
top++;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式