python 列表去重
阿新 • • 發佈:2021-07-15
給你一個有序陣列 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)