题目地址:
给定一个长 n n n数组 A A A,对于其最长的连续数字的前缀的和 s s s,找到最小的大于等于 s s s并且不在 A A A中的数。
代码如下:
class Solution {
public:
int missingInteger(vector<int>& a) {
unordered_set<int> st;
for (int x : a) st.insert(x);
int sum = a[0];
for (int i = 0; i + 1 < a.size(); i++)
if (a[i + 1] == a[i] + 1)
sum += a[i + 1];
else
break;
while (st.count(sum)) sum++;
return sum;
}
};
时空复杂度 O ( n ) O(n) O(n)。