旋轉數組

自己寫的方法,不太好:

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        lens = len(nums)
        if k == 0:
            return
        else:
            if k < lens:
                nums = self.rotate_module(nums, k, lens)
            if k == lens:
                pass
            if k > lens:
                nums = self.rotate_module(nums, k % lens, lens)
            
    def rotate_module(self, nums: List[int], k: int, lens) -> None: 
        nums.extend(nums[:(lens - k)])
        for i in range(lens - k):
            nums.pop(0)
        return nums

看到大神的nums[:]也寫了一個:

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        lens = len(nums)
        if k == 0:
            return
        else:
            if k < lens or k > lens:
                nums[:] = nums[lens - (k % lens):] + nums[:lens - k % lens]
            if k == lens:
                pass

證明在python中開闢內存比數組傳遞耗時更長

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章