思路:用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()