-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRepeated_and_missing_number.cpp
More file actions
42 lines (34 loc) · 985 Bytes
/
Repeated_and_missing_number.cpp
File metadata and controls
42 lines (34 loc) · 985 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <vector>
using namespace std;
class Solution
{
public:
vector<int> repeatedNumber(vector<int> &A)
{
long long int n = A.size();
long long int S2n = (long long int)(n * (n + 1) * (2 * n + 1)) / 6;
long long int Sn = (long long int)(n * (n + 1) / 2);
long long int Sa = 0;
long long int S2a = 0;
for (long long int i = 0; i < n; i++)
{
Sa += A[i];
S2a += (long long int)A[i] * (long long int)A[i];
}
long long int val1 = Sn - Sa; // x - y;
long long int val2 = S2n - S2a; // x^2 - y^2
val2 /= val1;
long long int x = (val1 + val2) / 2;
long long int y = x - val1;
return {(int)y, (int)x};
}
};
int main()
{
vector<int> a = {1, 2, 2, 3, 5};
Solution s;
vector<int> ans = s.repeatedNumber(a);
cout << ans[0] << " " << ans[1];
return 0;
}