-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathshuffle-an-array.cs
38 lines (34 loc) · 935 Bytes
/
shuffle-an-array.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class Solution
{
private int[] _original, _numbers;
private Random _generator;
public Solution(int[] nums)
{
_original = new int[nums.Length];
_numbers = new int[nums.Length];
_generator = new Random();
Array.Copy(nums, _original, nums.Length);
Array.Copy(nums, _numbers, nums.Length);
}
public int[] Reset() {
Array.Copy(_original, _numbers, _original.Length);
return _numbers;
}
public int[] Shuffle()
{
var n = _numbers.Length;
while (n > 1)
{
var k = _generator.Next(n);
(_numbers[n - 1], _numbers[k]) = (_numbers[k], _numbers[n - 1]);
n--;
}
return _numbers;
}
}
/**
* Your Solution object will be instantiated and called as such:
* Solution obj = new Solution(nums);
* int[] param_1 = obj.Reset();
* int[] param_2 = obj.Shuffle();
*/