华为od机试题及答案.docxVIP

  • 2
  • 0
  • 约2.41千字
  • 约 7页
  • 2026-06-12 发布于山西
  • 举报

华为od机试题及答案

一、编程算法题(总分100)

1.题目:数组中重复的数字(30分)

题目描述:

在一个长度为n的数组nums中的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个重复的数字,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。

要求:不能修改数组,空间复杂度O(1)。

答案:

```python

deffindRepeatNumber(nums):

使用集合进行查找,空间复杂度O(n)

seen=set()

fornuminnums:

ifnuminseen:

returnnum

seen.add(num)

return-1

或者使用原地哈希法(空间复杂度O(1)):

deffindRepeatNumber_opt(nums):

i=0

whileilen(nums):

ifnums[i]==i:

i+=1

elifnums[i]==nums[nums[i]]:

returnnums[i]

else:

交换nums

文档评论(0)

1亿VIP精品文档

相关文档