- 2
- 0
- 约4.33千字
- 约 9页
- 2026-08-06 发布于新疆
- 举报
黑谷科技面试题及答案解析
一、编程与算法题(总分50分)
1.题目:数组中重复的数字。给定一个整数数组nums,其中nums的长度为n+1,且nums的元素范围是1到n之间。数组中必然存在至少一个重复的数字,但可能不止一个重复的数字。请设计一个算法,找出数组中任意一个重复的数字,并返回该数字。要求时间复杂度为O(n),空间复杂度为O(1)(不使用额外数组或哈希表)。
答案:使用快慢指针法(类似环形链表检测),将数组元素视为链表的节点,从头节点开始,快指针每次走两步,慢指针每次走一步,相遇点即为环的入口,对应数组中的重复数字。具体步骤:
-初始化快指针fast=0,慢指针slow=0;
-进入循环,直到fast!=nums[fast]:
-fast=nums[nums[fast]];
-slow=nums[slow];
-当循环结束时,将slow指向0,然后同时移动fast和slow,直到fast==slow,此时fast/slow即为重复数字。
2.题目:旋转排序数组中的搜索。给定一个排序数组,但数组已被“旋转”过(例如,原数组[0,1,2,4,5,6,7]可能变成[4,5,6,7,0,1,2]),请设计一个算法
原创力文档

文档评论(0)