百科问答小站 logo
百科问答小站 font logo



腾讯面试题,如何寻找一个数组里面唯一不重复的元素?要求时间复杂度o(n)和空间复杂度o(1)? 第1页

  

user avatar   zjc-7-76 网友的相关建议: 
      

直接求所有元素的异或和就行

大致代码:

s=0

for i=1 to n{

s = s xor a[i]

}

return s

(xor在c++里运算符是^)

原理说明:对于任何数x,0 xor x=x且x xor x=0


user avatar   mo-yu-xiao-xuan 网友的相关建议: 
      

如果题目里说的重复指的是恰好出现两次,那么直接O(n)把数组里的元素都异或(xor)起来就行,得到的结果就是那个唯一的不重复的元素。




  

相关话题

  如何生成多个互不重叠的不同半径圆? 
  对于任意既约分数,都可以分解成有限个不同奇数的倒数和吗? 
  南开大学软件学院怎么样? 
  怎么知道电脑是32还是64位的? 
  为什么国内用户倾向于认为 Windows 是廉价的? 
  从算法的角度来看,Elsagate 事件暴露出了「自动推荐」的哪些问题,该如何规避? 
  计算机行业是不是自砸饭碗的行业? 
  假如重新设计「验证码」,应该如何设计? 
  机器学习里的 kernel 是指什么? 
  为什么我电脑一百度“保存”这两个字就退出?而且保存不了文件。 

前一个讨论
交换机各个端口之间的网速是否会被影响?
下一个讨论
中医黑认为西医是现代医学,那么是否认为西方经济学是现代经济学?





© 2025-05-03 - tinynew.org. All Rights Reserved.
© 2025-05-03 - tinynew.org. 保留所有权利