1. 程式人生 > >陣列——從排序陣列中刪除重複項

陣列——從排序陣列中刪除重複項

給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。
不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用O(1)額外空間的條件下完成。
示例1:

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

思路:將每一個元素和前一個元素相比較,若不等,則將其填入,直至獲得k個元素,刪除第k個之後的元素。

class Solution:
    def removeDuplicates(self,
nums): k = 0 for i in range(1, len(nums)): if nums[i] != nums[k]: k += 1 nums[k] = nums[i] del nums[k+1:] return len(nums)

最快的記錄解答:

class Solution:
    def removeDuplicates(self, nums):
    	l = len(nums)
    	if l <= 1:
    	    return
l index = 0 for i in range(0, l-1): if nums[i] != nums[i+1]: nums[index+1] = nums[i+1] index += 1 return index+1