解题思路
这个题,应该是一道数学推导的题目,和数据结构和算法啥的还没有啥关系
1. 情况判断
- 从第一个数,开始累加,如果在nums中找不到,则加入到数列中,这样子也可以解决问题,但是速度肯定会超时。本来是这么写的,也就先有了一个思路。
- 然后每一次向后移位,如果少了一段,就减去这一段即可,直到减到0为止,加了好几个特殊处理,应该会有更好的写法。先这么写吧。
代码
class Solution {
public:
int missingElement(vector<int>& nums, int k) {
int result;
int count = k;
int lastNumber = nums[0];
if (nums.size() == 1) {
return nums[0] + k;
}
for (int i = 1; i < nums.size() && count > 0; i++) {
if (nums[i] - nums[i - 1] > count) {
result = nums[i - 1] + count;
count = -1;
break;
}
if (nums[i] - nums[i - 1] > 1) {
count = count - (nums[i] - nums[i - 1]) + 1;
}
lastNumber = nums[i] + 1;
}
if (count == 0) {
result = lastNumber;
} else if (count > 0) {
result = lastNumber + count - 1;
}
return result;
}
};