1. 程式人生 > 其它 >python 列表去重

python 列表去重

給你一個有序陣列 nums ,請你 原地 刪除重複出現的元素,使每個元素 只出現一次 ,返回刪除後陣列的新長度。

不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 O(1) 額外空間的條件下完成。

示例 1:

輸入:nums = [1,1,2]
輸出:2, nums = [1,2]
解釋:函式應該返回新的長度 2 ,並且原陣列 nums 的前兩個元素被修改為 1, 2 。不需要考慮陣列中超出新長度後面的元素。

  

示例 2:

輸入:nums = [0,0,1,1,1,2,2,3,3,4]
輸出:5, nums = [0,1,2,3,4]
解釋:函式應該返回新的長度 5 , 並且原陣列 nums 的前五個元素被修改為 0, 1, 2, 3, 4 。不需要考慮陣列中超出新長度後面的元素。

  

解答

* 題目要求是原地修改

class Solution:
    def removeDuplicates(self, nums):
        for i in range(len(nums) - 1, 0, -1):
            if nums[i] == nums[i - 1]:
                nums.pop(i)
        return len(nums), nums


s = Solution()
nums = [0, 0, 1, 1, 1, 2, 2, 3, 3, 4]
length, news_nums = s.removeDuplicates(nums)
print(length)
print(news_nums)

 

* 不按原地修改

class Solution:
    def removeDuplicates(self, nums):
        new_l = []
        for i in nums:
            if i not in new_l:
                new_l.append(i)
        return len(new_l), new_l


s = Solution()
nums = [0, 0, 1, 1, 1, 2, 2, 3, 3, 4]
length, news_nums = s.removeDuplicates(nums)
print(length)
print(news_nums)