Task description
Find the missing element in a given permutation.
A zero-indexed array A consisting of N different integers is given. The array contains integers in the range [1..(N + 1)], which means that exactly one element is missing.
Your goal is to find that missing element.
Write a function:
int solution(vector<int> &A);
that, given a zero-indexed array A, returns the value of the missing element.
For example, given array A such that:
A[0] = 2 A[1] = 3 A[2] = 1 A[3] = 5
the function should return 4, as it is the missing element.
Assume that:
- N is an integer within the range [0..100,000];
- the elements of A are all distinct;
- each element of array A is an integer within the range [1..(N + 1)].
Complexity:
- expected worst-case time complexity is O(N);
- expected worst-case space complexity is O(1), beyond input storage (not counting the storage required for input arguments).
Elements of input arrays can be modified.
Solution
//CaptainMay AllRights Reserved
int solution(vector<int> &A) {
// write your code in C++11
const int n = A.size();
int* hash = new int[n+2];
memset(hash, 0, 4*(n+2));
int result = 0;
for (int i = 0; i < n; ++i)
{
int temp = A[i] % (n+2);
*(hash + temp) = 1;
}
for (int i = 1; i < n + 2; ++i)
{
if(*(hash + i) == 0)
return i;
}
}以上算法满足complexity O(N)和space complexity O(1)
本文介绍了一种在给定的包含N个不同整数的数组中,找到唯一缺失元素的算法。该算法通过哈希表实现了O(N)的时间复杂度和O(1)的空间复杂度,适用于数组内元素范围从1到(N+1)的情况。
278

被折叠的 条评论
为什么被折叠?



