File tree Expand file tree Collapse file tree 3 files changed +97
-0
lines changed
solution/0600-0699/0645.Set Mismatch Expand file tree Collapse file tree 3 files changed +97
-0
lines changed Original file line number Diff line number Diff line change @@ -107,6 +107,40 @@ class Solution {
107
107
}
108
108
```
109
109
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
+
110
144
### ** C++**
111
145
112
146
``` cpp
Original file line number Diff line number Diff line change @@ -83,6 +83,40 @@ class Solution {
83
83
}
84
84
```
85
85
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
+
86
120
### ** C++**
87
121
88
122
``` cpp
Original file line number Diff line number Diff line change
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
+ } ;
You can’t perform that action at this time.
0 commit comments