找到恰好出现三次的元素
Posted
技术标签:
【中文标题】找到恰好出现三次的元素【英文标题】:Find the element that appears exactly thrice 【发布时间】:2017-11-26 05:22:25 【问题描述】:我最近在一次采访中被问到这个问题。
给定一个 int 数组,其中除一个数字之外的所有数字都出现一次,并且恰好一个数字出现 3 次。在 O(1) 空间和 O(n) 时间复杂度中找到该数字。
我该如何回答这个问题?
【问题讨论】:
对数组中可能出现的整数是否有任何限制? 你可以改变输入吗? 整数是正数,没有其他约束。 任何使用这样的面试问题的面试官更感兴趣的是证明自己比候选人优越,而不是找出候选人是否优秀。这是一个很好的证据,表明这不是你想要工作的地方。 @user2980096 你看到this 链接了吗?我没有仔细阅读它,但它显示了找到重复项的下限... 【参考方案1】:只需对数组进行排序并找到答案。
注意:由于数组具有整数值,您可以使用具有线性时间复杂度的Radix 排序算法。此外,您可以将其用作就地算法。
PS:三次是错觉数据,原来的问题是被访者可以想像排序问题一样简单。这种期望的公平程度是对面试水平的尊重!
【讨论】:
以上是关于找到恰好出现三次的元素的主要内容,如果未能解决你的问题,请参考以下文章