從排序陣列中刪除重複項
阿新 • • 發佈:2019-01-07
閒來無事從網上找了一些題目做一下,於是就想把它寫成博文發出去。
https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/21/
LeetCode上的問題:
給定一個有序陣列,你需要原地刪除其中的重複內容,使每個元素只出現一次,並返回新的長度。
不要另外定義一個數組,您必須通過用 O(1) 額外記憶體原地修改輸入的陣列來做到這一點。
示例:
給定陣列: nums = [1,1,2],
你的函式應該返回新長度 2, 並且原陣列nums的前兩個元素必須是1和2
不需要理會新的陣列長度後面的元素
首先這有一個很重要的前提 有序陣列
private static int RemoveDuplicates(int[] nums) { int slow = 0; int count = 0; for (int fast = 0; fast < nums.Length; fast ++ ){ if(nums [slow] != nums[fast]){ slow++; nums[slow] = nums[fast]; count++; } } return count; }
這就是給出的程式碼核心,這裡是讓快指標遍歷陣列,慢指標作為儲存用。但是好像有問題!count應該輸出為2,但是輸出了1,不信你試試。其實很簡單就是對比的時候忘了把自己加上。
int count =1 ; //這樣宣告就可以嘍