已排序陣列刪除重複元素

2021-10-08 11:38:30 字數 888 閱讀 1178

刪除排序陣列中的重複項:

思路可以轉變為:

前提陣列有序->可以理解為相鄰元素間要不相同,要不不同

要求刪除重複元素,實際上就是將不重複的元素移到陣列的左側。

假如乙個有序陣列為

[1,1,1,2,2,3,4,5]

使用雙指標法(快慢指標),分別為p和q

在迴圈遍歷過程中,第一輪可以將陣列表示為

p在1的位置上q在第二個2的位置上,隨後p+1並將2的值賦給p+1

[1,2,1,2,2,3,4,5]

第二輪[1,2,3,2,2,3,4,5]

第三輪[1,2,3,4,2,3,4,5]

第四輪[1,2,3,4,5,3,4,5] 最後三個數為廢棄數,無重複排序陣列長度為p+1。

時間複雜度:o(n)

空間複雜度:o(1)

具體**如下:(推薦使用)

public

intremoveduplicates

(int

nums)

q++;}

return p +1;

}

單純實現:

可以採用set集合進行元素過濾

遍歷所有陣列中元素,並將元素存入set中

如果陣列中無排序,採用linkedhashset集合,出來結果將會是有順序且不重複的陣列。

public

intremoveduplicates

(int

nums)

//返回set集合的陣列形式

return set.

toarray()

;}

leetcode 刪除排序陣列重複元素

題目 給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地 修改輸入陣列並在使用 o 1 額外空間的條件下完成。示例 給定 nums 0,0,1,1,1,2,2,3,3,4 函式應該返回新的長度 5,並且原陣列 num...

去除已排序陣列中的重複元素

給定乙個已排序的陣列,去除陣列中的重複元素,只保留乙個重複的元素,並且返回新的陣列長度。要求 不要給陣列分配額外的空間,你必須使用常量的記憶體大小進行原地操作。例如 給出陣列a 1,1,2 你的函式呼叫之後必須返回長度length 2,並且a現在變成 1,2 乙個已排序的陣列,例如 1,1,2 返回...

刪除排序陣列中重複元素的方法

可以檢視leetcode上的26題 給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度 2,...