数据结构论坛

注册

 

发新话题 回复该主题

算法与数据结构上机复习如何找出唯一成对 [复制链接]

1#
白癜风患者救助计划 https://disease.39.net/bjzkbdfyy/240412/l8oelnq.html

Problem/p>

1-这个数放在含有个元素的数组中,只有唯一的一个元素值重复,其他均只出现一次。设计一个算法,将它找出来,你能否设计一个算法实现?

思路1(最先想到的)/p>

首先也是最暴力的方法就是一个循环嵌套一个循环,一个一个去找

时间复杂度为O(n)

下面是实现的代码/p>

思路2/p>

另外开辟一个大小为的数组arr,遍历原来的数组,原来数组中的数就是arr中的下标,若遇到一个数就将对应arr的下标位置对应的值加一就行。然后遍历arr数组,若遇到下标位置对应的值为2的时候,输出下标就行

时间复杂度为O(n)

下面是实现的代码/p>

思路3:

使用异或来找出唯一成对的数,这种算法的效率应该是最高的了,而且不需要辅助空间

先来说一下异或的规则:

a^a=0

a^0=a

然后我们的思路是将这个数全部异或起来,那么就会把相同的数给变成0了,那么怎么办呢?

我们可以再次将该数与1-之间的数给异或起来

那么不重复的数都会变成0,而重复的数不会变成0

时间复杂度为O(n)

下面是实现的代码:

分享 转发
TOP
发新话题 回复该主题