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 30418c9

Browse files
author
ruislan
committed
Merge remote-tracking branch 'origin/master'
2 parents af958bd + 377ea38 commit 30418c9

File tree

4 files changed

+117
-0
lines changed

4 files changed

+117
-0
lines changed

‎Cargo.lock‎

Lines changed: 79 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Cargo.toml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ edition = "2018"
77
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
88

99
[dependencies]
10+
rand = "0.8.0"

‎src/q/mod.rs‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ mod q374;
210210
mod q375;
211211
mod q377;
212212
mod q383;
213+
mod q384;
213214
mod q386;
214215
mod q387;
215216
mod q389;

‎src/q/q384.rs‎

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
use rand::prelude::*;
2+
3+
struct Solution {
4+
nums: Vec<i32>,
5+
origin: Vec<i32>,
6+
n: usize,
7+
}
8+
9+
#[allow(unused)]
10+
impl Solution {
11+
fn new(nums: Vec<i32>) -> Self {
12+
Solution { nums: nums.clone(), origin: nums.clone(), n: nums.len() }
13+
}
14+
15+
fn reset(&mut self) -> Vec<i32> {
16+
self.nums = self.origin.clone();
17+
self.nums.clone()
18+
}
19+
20+
// 方法1
21+
// 模拟洗牌,假设我们有一堆牌0..n
22+
// 我们可以随机抽取一张这个牌,然后把这张牌放到最后
23+
// 在这里,我们可以把这张牌与最后一张牌进行交换
24+
// 也即是说最后一张牌已经洗好,
25+
// 那么要洗的牌就是第一张到倒数第二张,也即是0..n-1
26+
// 我们重复上述操作,一直到最后一张牌
27+
// 即完成了洗牌操作
28+
// AC 20ms 5.5mb
29+
fn shuffle(&mut self) -> Vec<i32> {
30+
for i in (0..self.n).rev() {
31+
let j = rand::thread_rng().gen_range(0..i + 1);
32+
self.nums.swap(i, j);
33+
}
34+
self.nums.clone()
35+
}
36+
}

0 commit comments

Comments
(0)

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