我最近在某个地方遇到过一个问题:
假设您有一个1001整数的数组.整数是随机顺序,但您知道每个整数在1到1000之间(包括1和1000).此外,每个数字在数组中只出现一次,但一个数字除外,它出现两次.假设您只能访问数组的每个元素一次.描述一个算法来查找重复的数字.如果您在算法中使用了辅助存储,是否可以找到不需要它的算法?
我感兴趣的是第二部分,即不使用辅助存储.你有什么主意吗?
以下内容来自求职面试:
在包含整数的给定数组中,除了一个数字之外,每个数字重复一次,不重复.编写一个函数,查找不重复的数字.
我想过使用HashSet,但它可能会使一切变得复杂......
任何简单解决方案的想法?
找到在列表中只出现一次的数字的最佳算法是什么,其中所有其他数字恰好发生两次.
因此,在整数列表中(让它作为一个数组),每个整数重复两次,除了一个.找到那个,什么是最好的算法.
我得到了这个问题的考试:
给定整数数组,使用O(N)时间复杂度和O(1)空间复杂度找到第一个不在数组中重复的数字.
我想不出任何解决方案.我知道我可以迭代数组并维护一个linkedhashmap,它将存储数组元素和它出现的次数,然后最后我必须搜索hashmap来找到那个数字.空间复杂度大于O(1)但我想不出其他解决方案.
我也仔细阅读问题,并说数组的最大尺寸为100万.我认为如果我们可以创建一个自定义散列图,它将使用100万大小的固定大小的数组,那么这可以在O(1)空间复杂度中实现,因为在这种情况下,所需的存储将是恒定的,但如果我是正确的则不确定.如果有任何其他解决方案,请告诉我.
看到一段有趣的代码,在重复数字列表中找到一个孤独的数字(列表中的每个数字除了一个之外都会出现两次).
function findNonPaired(listOfNumbers) {
let nonPairedNumber = 0
listOfNumbers.forEach((n) => {
nonPairedNumber ^= n
})
return nonPairedNumber
}
const x = [1,5,4,3,9,2,3,1,4,5,9]
console.log(findNonPaired(x))Run Code Online (Sandbox Code Playgroud)
这个解决方案看起来非常优雅,但我很好奇^=操作员在这里做了什么?
因为这是一系列问题中的一个问题.我正在修改它以使其不与其他的重复.谢谢你的帮助.
对:我有一个整数数组.在数组中,除了一个元素外,每个元素都会出现两次.我想找到那个单号.
示例:[2, 4, 2, 1, 4, 1, 3],单个数字是3.
我的想法是使用a HashMap,这需要O(n)时间和O(n)空间.还有更好的解决方案吗?谢谢.
三元组:每个元素出现三次,除了一个.找一个单一的.
示例:[1, 2, 4, 2, 4, 1, 2, 4, 1, 3],单个数字是3.
我有一个数组,其中除了一个重复所有元素:
int[] a={2,6,6,2,4,1,4};
Run Code Online (Sandbox Code Playgroud)
如何找到未配对的元素整数?
给定一个整数数组,除了一个元素外,每个元素都会出现两次.找一个单一的.
注意:您的算法应具有线性运行时复杂性.你能不用额外的内存来实现吗?
class Solution:
# @param {integer[]} nums
# @return {integer}
def singleNumber(self, nums):
prev = []
for i,j in enumerate(nums):
if j in prev:
nums[i] = -j
else:
prev.append(j)
return sum(nums)
Run Code Online (Sandbox Code Playgroud)
这是来自leetcode的问题,实际上是AC率最高的问题.但是,正如我的代码所说,它告诉我时间限制已超出并且无法被接受.任何人都可以分析我的代码,包括复杂性吗?非常感谢.
Upadate:谢谢大家,我已将"prev"从列表更改为一组,这很好用!
class Solution:
# @param {integer[]} nums
# @return {integer}
def singleNumber(self, nums):
prev = set([])
for i,j in enumerate(nums):
if j in prev:
nums[i] = -j
else:
prev.add(j)
return sum(nums)
Run Code Online (Sandbox Code Playgroud)
但是,正如问题所描述的那样,我仍在寻找不需要额外记忆的解决方案.
更新:我使用另一种方法尝试解决问题,但再次收到超时时间.
class Solution:
# @param {integer[]} nums
# @return {integer}
def singleNumber(self, nums):
for i,j …Run Code Online (Sandbox Code Playgroud) 给定一个奇数大小的整数数组.除了单个整数外,数组中的所有整数都会出现两次.如何以最有效(内存和复杂度)的方式找到这个非耦合的整数?
我有很多关于这个问题的答案使用其他语言,但我想要一个 php 语言的答案。请任何人帮助我这是我的阵列看起来像
$array = [1, 2, 3, 4, 4, 1, 2, 5, 5, 11, 11];
Run Code Online (Sandbox Code Playgroud) algorithm ×7
arrays ×4
java ×3
c++ ×2
c ×1
duplicates ×1
javascript ×1
php ×1
puzzle ×1
python ×1