思路:用python random模块中的shuffle来打乱数组。这道题更多带给我的知识更多是关于引用和拷贝的。
对于Python的list,若nums=self.nums,其实nums和self.nums这两个变量指向的是同一个列表对象。
因此,如果我们希望改变nums的时候不改变self.nums,那么我们需要拷贝self.nums给nums。
python中常用的拷贝方式有4种:
1)nums=self.nums[:]
2)nums=list(self.nums)
3)nums=self.nums * 1
4)import copy
nums=copy.copy(self.nums)#浅拷贝,只是列表被拷贝了,但列表中的每个元素对象指向的还是同一个。
nums=copy.deepcopy(self.nums)#深拷贝,不仅列表被拷贝了,列表中的每个元素对象也是拷贝过的。
本题代码:
class Solution(object):
def __init__(self, nums):
"""
:type nums: List[int]
"""
self.nums=nums
def reset(self):
"""
Resets the array to its original configuration and return it.
:rtype: List[int]
"""
return self.nums
def shuffle(self):
"""
Returns a random shuffling of the array.
:rtype: List[int]
"""
import random
nums=list(self.nums)
random.shuffle(nums)
return nums
# Your Solution object will be instantiated and called as such:
# obj = Solution(nums)
# param_1 = obj.reset()
# param_2 = obj.shuffle()