Учитывая отсортированный массив чисел с дубликатами, удалите все дубликаты из массива, оставив по одному из каждого числа. Вернуть длину массива. Например:
input = [1,1,2,2,2,3,3] output = [1,2,3]
Эта проблема относительно проста. Если вы хотите сделать это, используя время O (n) и 0 (1), вы хотите использовать два метода указателя. Я создаю экземпляры два указателя, я и J, установленные на 0 и 1 соответственно. Я буду использовать цикл while, и я проверю, равна ли Num с I Index num с j index. Если нет, я увеличиваю их обоих на 1. Если они равны, я выскакиваю число с помощью j индекса.
def removeDuplicates(nums): i, j = 0, 1 while j < len(nums): if nums[i] != nums[j]: i += 1 j += 1 elif nums[i] == nums[j]: nums.pop(j) return len(nums)
В JavaScript это похоже на:
function removeDuplicates(nums): let i = 0; let j = 1; while (j< nums.length) { if (nums[i] != nums[j]) { i+= 1; j+= 1; } else if (nums[i] == nums[j]) { nums.splice(j, 1); } return nums.length; }
В функции JavaScript я использую сплайс вместо POP, так как JavaScript не появляется по индексу. Сплайс берет элемент с указанным индексом, и если есть параметр 1, он удаляет этот элемент.
Оригинал: “https://dev.to/xshirl/remove-duplicates-from-sorted-array-leetcode-2bcj”