LeetCode刷題 刪除排序陣列中的重複項

2021-09-12 08:54:58 字數 851 閱讀 9733

給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。

不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o(1) 額外空間的條件下完成。

給定陣列 nums = [1,1,2],

函式應該返回新的長度 2, 並且原陣列 nums 的前兩個元素被修改為 1, 2。

給定 nums = [0,0,1,1,1,2,2,3,3,4],

函式應該返回新的長度 5, 並且原陣列 nums 的前五個元素被修改為 0, 1, 2, 3, 4。

分析

初始index為0,i為1,for迴圈遍歷陣列,且i始終大於index;

若相等,則後移遍歷繼續比較;

若不相等,則修改。將i所指的元素賦值給index,從而刪除中間的重複項。

時間複雜度o(n);空間複雜度o(1)

int removeduplicates(vector& nums)
分析

upper_bound:返回範圍內第乙個大於val的元素的迭代器;

通過使用upper_bound查詢下乙個不相等元素的迭代器,跳過重複項。

時間複雜度o(n);空間複雜度o(1)

int removeduplicates(vector& nums) 

templateoutit removeduplicates(init first, init last, outit output)

return output;

}

LeetCode刷題 搜尋旋轉排序陣列 II

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,0,1,2,2,5,6 可能變為 2,5,6,0,0,1,2 編寫乙個函式來判斷給定的目標值是否存在於陣列中。若存在返回 true,否則返回 false。輸入 nums 2,5,6,0,0,1,2 target 0 輸出 tru...

leetcode刷題(陣列)3 搜尋旋轉排序陣列

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 1 你可以假設陣列中不存在重複的元素。你的演算法時間複雜度必須是 o log n 級別。cl...

LeetCode刷題記錄 刪除排序陣列中的重複項

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