26. Удаление дубликатов из отсортированного массива (легко)

Учитывая отсортированный массив nums, удалите дубликаты на месте, чтобы каждый элемент отображался только один раз и вернул новую длину.

Не выделяйте дополнительное пространство для другого массива, вы должны сделать это, изменив входной массив на месте с помощью дополнительной памяти O (1).

Пример 1:

Given nums = [1,1,2],
Your function should return length = 2, with the first two elements of nums being 1 and 2 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 of nums being modified to 0, 1, 2, 3, and 4 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]);
}

要 我們 把 陣列 中 重複 的 數字 消除 掉 , 並且 計算 出 把 重複 的 值 消除 以後 長度 為 多少 , 不允許 我們 重新 返回 的 數組 , 這 題 以後 可能 有 很多 同學 會 學習 不同 語言 , 未來 題 能 盡量 用 最 原 生 的 方法 我 就會 用 , 我們 用 上 一篇 用過 的 雙 指針 來 處理 吧。

解題步驟:

  1. 兩個 指針 分別 array 的 N 、 N + 1 , 還有 一個 count 用來 計算 切換 的 次數。
  2. 回 傳 считать 就 可以 了。

大家加油。

上 一篇 : [039] LeetCode 27 演算法 【Удалить элемент】 移除 元素

下 一篇 : [041] LeetCode 80 演算法 【Удалить дубликаты из отсортированного массива II】 移除 有序 數組 中 重複 元素 II