26. Удаление дубликатов из отсортированного массива (легко)
Учитывая отсортированный массив nums, удалите дубликаты на месте, чтобы каждый элемент отображался только один раз и вернул новую длину.
Не выделяйте дополнительное пространство для другого массива, вы должны сделать это, изменив входной массив на месте с помощью дополнительной памяти O (1).
Пример 1:
Given nums = [1,1,2], Your function should return length =2
, with the first two elements ofnums
being1
and2
respectively. It doesn't matter what you leave beyond the returned length.
Пример 2:
Given nums = [0,0,1,1,1,2,2,3,3,4], Your function should return length =5
, with the first five elements ofnums
being modified to0
,1
,2
,3
, and4
respectively. It doesn't matter what values are set beyond the returned length.
Уточнение:
Не знаете, почему возвращаемое значение - целое число, а ваш ответ - массив?
Обратите внимание, что входной массив передается по ссылке, что означает, что изменение входного массива также будет известно вызывающему.
Внутренне вы можете думать об этом:
// nums is passed in by reference. (i.e., without making a copy) int len = removeDuplicates(nums); // any modification to nums in your function would be known by the caller. // using the length returned by your function, it prints the first len elements. for (int i = 0; i < len; i++) { print(nums[i]); }
要 我們 把 陣列 中 重複 的 數字 消除 掉 , 並且 計算 出 把 重複 的 值 消除 以後 長度 為 多少 , 不允許 我們 重新 返回 的 數組 , 這 題 以後 可能 有 很多 同學 會 學習 不同 語言 , 未來 題 能 盡量 用 最 原 生 的 方法 我 就會 用 , 我們 用 上 一篇 用過 的 雙 指針 來 處理 吧。
解題步驟:
- 兩個 指針 分別 array 的 N 、 N + 1 , 還有 一個 count 用來 計算 切換 的 次數。
- 回 傳 считать 就 可以 了。
大家加油。
上 一篇 : [039] LeetCode 27 演算法 【Удалить элемент】 移除 元素
下 一篇 : [041] LeetCode 80 演算法 【Удалить дубликаты из отсортированного массива II】 移除 有序 數組 中 重複 元素 II