// 2024/08/14
// interviewer: Alisha
// interviewee: Ted
// Q1 ----------------------------------
start 11:10
a = [1, 2, 4, 3]
b = [1, 3, 2, 3]
c = [1, 3, 4, 3]
Our goal is to obtain an array C such that the smallest positive integer not present in C is as small as possible.
ans : 2
1. a.length = b.legth
2. a.length > 0
3. return int
a = [1, 2, 1, 3]
b = [1, 3, 2, 3]
c = [1, 3, 2, 3]
a = 12345
b = 12345
c = 12345
-> 6
// A = 1314, B = 1122 -> 2
1. sort(a + b)
1. find a[i] = b[i], 0<=i<= a.length, x -> unordered_set
2. find a[i] != b[i], 選看過的 or 選最大的
TC: O(nlogn)
SC: O(n)
```cpp!
// 11:25
// a = [1, 2, 4, 3]
// b = [1, 3, 2, 3]
// seen: {1,3}
// c: [1, 3, 4, 3]
// c: [1,3,3,4]
// d: [1,1,1,2,2,3,3,3,4]
int findMin(vector<int>& a, vector<in>& b) {
unorderd_set<int> seen;
for (int i = 0; i < a.length; i++) {
if (a[i] == b[i]) {
seen.insert(a[i]);
}
}
vector<int> c;
for (int i = 0; i < a.legnth; i++) {
if (a[i] != b[i]) {
if (seen.count(a[i])) {
c.push_back(a[i]);
} else if (seen.count(b[i])) {
c.push_back(b[i]);
} else {
c.push_back(max(a[i], b[i]));
}
} else {
c.push_back(a[i]);
}
}
sort(c.begin(), c.end());
vector<int> d;
for (int i = 0; i < a.length; i++) {
d.push_back(a[i]);
d.push_back(b[i]);
}
sort(d.begin(), d.end());
// c: [1,3,3,4]
// p
// d: [1,1,1,2,2,3,3,3,4]
// p
int pc = 0;
int pd = 0;
for (int i = 0; i < d.size(); i++) {
if (d[pd] == c[pc]) {
while (pd < d.size() - 1 && d[pd] = d[pd + 1]) {
pd++;
}
} else {
return d[pd];
}
pc++;
pd++;
}
}
```
```cpp!
// 11:25
// a = [1, 2, 4, 3]
// b = [1, 3, 2, 3]
// seen: {1,3}
// c: {1,3,4}
// ans: 2
TC: O(n)
SC: O(n)
int findMin(vector<int>& a, vector<int>& b) {
unorderd_set<int> seen;
for (int i = 0; i < a.size(); i++) {
if (a[i] == b[i]) {
seen.insert(a[i]);
}
}
unorderd_set<int> c;
for (int i = 0; i < a.size(); i++) {
if (a[i] != b[i]) {
if (seen.count(a[i])) {
c.insert(b[i]);
} else if (seen.count(b[i])) {
c.insert(a[i]);
} else {
c.insert(max(a[i], b[i]));
}
} else {
c.insert(a[i]);
}
}
int ans = INT_MAX;
for (int i = 0; i < a.size(); i++) {
if (c.count(a[i]) == 0) {
ans = min(ans, a[i]);
}
if (c.count(b[i]) == 0) {
ans = min(ans, b[i]);
}
}
return ans;
}
```
// finish 12:00
feedback
- problem statement clarify
- approach 敘述完整到產出答案
// Q2 ----------------------------------
```cpp!
```