leetcode384 打乱数组

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012343179/article/details/89764849

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

猜你喜欢

转载自blog.csdn.net/u012343179/article/details/89764849