Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 7b63962

Browse files
committed
feat: add rust solutions to lc problem: No.3289
1 parent 7d7aeba commit 7b63962

File tree

4 files changed

+125
-0
lines changed

4 files changed

+125
-0
lines changed

‎solution/3200-3299/3289.The Two Sneaky Numbers of Digitville/README.md‎

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,28 @@ function getSneakyNumbers(nums: number[]): number[] {
168168
}
169169
```
170170

171+
#### Rust
172+
173+
```rust
174+
use std::collections::HashMap;
175+
176+
impl Solution {
177+
pub fn get_sneaky_numbers(nums: Vec<i32>) -> Vec<i32> {
178+
let mut cnt = HashMap::new();
179+
for x in nums {
180+
*cnt.entry(x).or_insert(0) += 1;
181+
}
182+
let mut ans = Vec::new();
183+
for (x, v) in cnt {
184+
if v == 2 {
185+
ans.push(x);
186+
}
187+
}
188+
ans
189+
}
190+
}
191+
```
192+
171193
<!-- tabs:end -->
172194

173195
<!-- solution:end -->
@@ -296,6 +318,29 @@ function getSneakyNumbers(nums: number[]): number[] {
296318
}
297319
```
298320

321+
#### Rust
322+
323+
```rust
324+
impl Solution {
325+
pub fn get_sneaky_numbers(nums: Vec<i32>) -> Vec<i32> {
326+
let n = nums.len() as i32 - 2;
327+
let mut xx = nums[n as usize] ^ nums[(n + 1) as usize];
328+
for i in 0..n {
329+
xx ^= i ^ nums[i as usize];
330+
}
331+
let k = xx.trailing_zeros();
332+
let mut ans = vec![0, 0];
333+
for &x in &nums {
334+
ans[((x >> k) & 1) as usize] ^= x;
335+
}
336+
for i in 0..n {
337+
ans[((i >> k) & 1) as usize] ^= i;
338+
}
339+
ans
340+
}
341+
}
342+
```
343+
299344
<!-- tabs:end -->
300345

301346
<!-- solution:end -->

‎solution/3200-3299/3289.The Two Sneaky Numbers of Digitville/README_EN.md‎

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,28 @@ function getSneakyNumbers(nums: number[]): number[] {
164164
}
165165
```
166166

167+
#### Rust
168+
169+
```rust
170+
use std::collections::HashMap;
171+
172+
impl Solution {
173+
pub fn get_sneaky_numbers(nums: Vec<i32>) -> Vec<i32> {
174+
let mut cnt = HashMap::new();
175+
for x in nums {
176+
*cnt.entry(x).or_insert(0) += 1;
177+
}
178+
let mut ans = Vec::new();
179+
for (x, v) in cnt {
180+
if v == 2 {
181+
ans.push(x);
182+
}
183+
}
184+
ans
185+
}
186+
}
187+
```
188+
167189
<!-- tabs:end -->
168190

169191
<!-- solution:end -->
@@ -292,6 +314,29 @@ function getSneakyNumbers(nums: number[]): number[] {
292314
}
293315
```
294316

317+
#### Rust
318+
319+
```rust
320+
impl Solution {
321+
pub fn get_sneaky_numbers(nums: Vec<i32>) -> Vec<i32> {
322+
let n = nums.len() as i32 - 2;
323+
let mut xx = nums[n as usize] ^ nums[(n + 1) as usize];
324+
for i in 0..n {
325+
xx ^= i ^ nums[i as usize];
326+
}
327+
let k = xx.trailing_zeros();
328+
let mut ans = vec![0, 0];
329+
for &x in &nums {
330+
ans[((x >> k) & 1) as usize] ^= x;
331+
}
332+
for i in 0..n {
333+
ans[((i >> k) & 1) as usize] ^= i;
334+
}
335+
ans
336+
}
337+
}
338+
```
339+
295340
<!-- tabs:end -->
296341

297342
<!-- solution:end -->
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
use std::collections::HashMap;
2+
3+
impl Solution {
4+
pub fn get_sneaky_numbers(nums: Vec<i32>) -> Vec<i32> {
5+
let mut cnt = HashMap::new();
6+
for x in nums {
7+
*cnt.entry(x).or_insert(0) += 1;
8+
}
9+
let mut ans = Vec::new();
10+
for (x, v) in cnt {
11+
if v == 2 {
12+
ans.push(x);
13+
}
14+
}
15+
ans
16+
}
17+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
impl Solution {
2+
pub fn get_sneaky_numbers(nums: Vec<i32>) -> Vec<i32> {
3+
let n = nums.len() as i32 - 2;
4+
let mut xx = nums[n as usize] ^ nums[(n + 1) as usize];
5+
for i in 0..n {
6+
xx ^= i ^ nums[i as usize];
7+
}
8+
let k = xx.trailing_zeros();
9+
let mut ans = vec![0, 0];
10+
for &x in &nums {
11+
ans[((x >> k) & 1) as usize] ^= x;
12+
}
13+
for i in 0..n {
14+
ans[((i >> k) & 1) as usize] ^= i;
15+
}
16+
ans
17+
}
18+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /