天天看點

leetcode384 打亂數組

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

繼續閱讀