程序员面试金典第六版消失的数字解法
时间: 2024-10-21 16:07:31 浏览: 27
程序员面试金典-第五版
程序员面试金典第六版中的“消失的数字”题目通常是一个经典的算法题,它涉及到数组操作和哈希表的数据结构。问题描述一般是一个有序数组,其中有一个元素丢失了,你需要找到这个缺失的数。
解决这个问题的一种常见思路是通过双指针法。首先设置两个指针,一个指向数组开始,另一个指向数组结束。然后逐个比较两个指针所指的元素:
1. 如果前一个元素小于后一个元素,说明中间缺失了一个大于前一个元素且小于后一个元素的数,缺失的数就是它们的差加一(因为前一个是连续的)。
2. 如果前一个元素等于后一个元素,就将两个指针都向后移动一位,继续检查下一个数。
3. 当前元素小于前一个元素时,说明从缺失的数开始,所有的数都是递减的,因此缺失的数是前一个元素。
当其中一个指针移到数组结尾时,剩下的那个数就是缺失的数字。以下是Python的一个简单实现示例:
```python
def findMissing(nums):
if not nums:
return 0
n = len(nums)
left, right = 0, n - 1
while left < right:
if nums[left] != nums[left + 1] - 1:
break
left += 1
else:
return nums[0]
while left < right:
mid = (left + right) // 2
if nums[mid] < nums[mid + 1]:
left = mid + 1
else:
right = mid
return nums[left] + 1
```
阅读全文