刪除排序陣列中的重複項:
思路可以轉變為:
前提陣列有序->可以理解為相鄰元素間要不相同,要不不同
要求刪除重複元素,實際上就是將不重複的元素移到陣列的左側。
假如乙個有序陣列為
[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,...