Skip to content

Commit 3ea5919

Browse files
authored
feat: add typescript solution to lc problem: No.0645.Set Mismatch (doocs#498)
1 parent 89a11e0 commit 3ea5919

File tree

3 files changed

+97
-0
lines changed

3 files changed

+97
-0
lines changed

solution/0600-0699/0645.Set Mismatch/README.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,40 @@ class Solution {
107107
}
108108
```
109109

110+
### **TypeScript**
111+
112+
```ts
113+
function findErrorNums(nums: number[]): number[] {
114+
let xor = 0;
115+
for (let i = 0; i < nums.length; ++i) {
116+
xor ^= ((i + 1) ^ nums[i]);
117+
}
118+
119+
let divide = 1;
120+
while ((xor & divide) == 0) {
121+
divide <<= 1;
122+
}
123+
124+
let ans1 = 0, ans2 = 0;
125+
for (let i = 0; i < nums.length; ++i) {
126+
let cur = nums[i];
127+
if (divide & cur) {
128+
ans1 ^= cur;
129+
} else {
130+
ans2 ^= cur;
131+
}
132+
133+
let idx = i + 1;
134+
if (divide & idx) {
135+
ans1 ^= idx;
136+
} else {
137+
ans2 ^= idx;
138+
}
139+
}
140+
return nums.includes(ans1) ? [ans1, ans2] : [ans2, ans1];
141+
};
142+
```
143+
110144
### **C++**
111145

112146
```cpp

solution/0600-0699/0645.Set Mismatch/README_EN.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,40 @@ class Solution {
8383
}
8484
```
8585

86+
### **TypeScript**
87+
88+
```ts
89+
function findErrorNums(nums: number[]): number[] {
90+
let xor = 0;
91+
for (let i = 0; i < nums.length; ++i) {
92+
xor ^= ((i + 1) ^ nums[i]);
93+
}
94+
95+
let divide = 1;
96+
while ((xor & divide) == 0) {
97+
divide <<= 1;
98+
}
99+
100+
let ans1 = 0, ans2 = 0;
101+
for (let i = 0; i < nums.length; ++i) {
102+
let cur = nums[i];
103+
if (divide & cur) {
104+
ans1 ^= cur;
105+
} else {
106+
ans2 ^= cur;
107+
}
108+
109+
let idx = i + 1;
110+
if (divide & idx) {
111+
ans1 ^= idx;
112+
} else {
113+
ans2 ^= idx;
114+
}
115+
}
116+
return nums.includes(ans1) ? [ans1, ans2] : [ans2, ans1];
117+
};
118+
```
119+
86120
### **C++**
87121

88122
```cpp
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
function findErrorNums(nums: number[]): number[] {
2+
let xor = 0;
3+
for (let i = 0; i < nums.length; ++i) {
4+
xor ^= ((i + 1) ^ nums[i]);
5+
}
6+
7+
let divide = 1;
8+
while ((xor & divide) == 0) {
9+
divide <<= 1;
10+
}
11+
12+
let ans1 = 0, ans2 = 0;
13+
for (let i = 0; i < nums.length; ++i) {
14+
let cur = nums[i];
15+
if (divide & cur) {
16+
ans1 ^= cur;
17+
} else {
18+
ans2 ^= cur;
19+
}
20+
21+
let idx = i + 1;
22+
if (divide & idx) {
23+
ans1 ^= idx;
24+
} else {
25+
ans2 ^= idx;
26+
}
27+
}
28+
return nums.includes(ans1) ? [ans1, ans2] : [ans2, ans1];
29+
};

0 commit comments

Comments
 (0)