File tree Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change 1+ use std:: time:: { SystemTime , UNIX_EPOCH } ;
2+ struct Solution {
3+ nums : Vec < i32 >
4+ }
5+ impl Solution {
6+ fn new ( nums : Vec < i32 > ) -> Self {
7+ Self { nums }
8+ }
9+ fn reset ( & self ) -> Vec < i32 > {
10+ self . nums . clone ( )
11+ }
12+ fn shuffle ( & self ) -> Vec < i32 > {
13+ let mut nums = self . nums . clone ( ) ;
14+ let mut n = nums. len ( ) as u128 ;
15+ while n > 1 {
16+ let m = SystemTime :: now ( ) . duration_since ( UNIX_EPOCH ) . unwrap ( ) . as_nanos ( ) % n;
17+ nums. swap ( m as usize , n as usize - 1 ) ;
18+ n -= 1 ;
19+ }
20+ nums
21+ }
22+ }
23+
24+ fn main ( ) {
25+ let nums = vec ! [ 1 , 2 , 3 ] ;
26+ let obj = Solution :: new ( nums) ;
27+ let ret_1: Vec < i32 > = obj. reset ( ) ;
28+ println ! ( "{:?}" , ret_1) ;
29+ let ret_2: Vec < i32 > = obj. shuffle ( ) ;
30+ println ! ( "{:?}" , ret_2) ;
31+ let ret_3: Vec < i32 > = obj. reset ( ) ;
32+ println ! ( "{:?}" , ret_3) ;
33+ }
You can’t perform that action at this time.
0 commit comments