Python 中從已經排序的陣列中移除重複元素
假設我們有一個已排序的列表 A。我們需要返回移除所有重複項後陣列的長度。我們必須在 O(1) 的額外空間內執行此操作。因此,我們必須在原地操作。
例如,假設 A = [1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 5, 5, 5, 6],則輸出為 6,因為有六個不同的元素。
要解決此問題,請遵循以下步驟 -
- 如果列表為空,則返回 0
- 否則,最初 take prev = A 的第一個元素。定義 length = 0
- 對於 i := 1 到 n-1,執行
- 如果 A[i] 與 prev 不同,則
- length := length + 1
- prev := A[i]
- 如果 A[i] 與 prev 不同,則
- 返回 length
讓我們看一下實現,以便更好地理解
示例(Python)
class Solution(object): def removeDuplicates(self, nums): """ :type nums: List[int] :rtype: int """ if len(nums) == 0: return 0 length = 1 previous = nums[0] index = 1 for i in range(1,len(nums)): if nums[i] != previous: length += 1 previous = nums[i] nums[index] = nums[i] index+=1 return length input_list = [1,1,2,2,2,3,3,3,3,4,5,5,5,6] ob1 = Solution() print(ob1.removeDuplicates(input_list))
輸入
[1,1,2,2,2,3,3,3,3,4,5,5,5,6]
輸出
6
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP