Автор оригинала: David Wong.
Заглавие:
Учитывая сортировку массива, вам нужно удалить повторяющиеся элементы на месте, чтобы каждый элемент появлялся только один раз, и вернуть новую длину массива после удаления. Не используйте дополнительное пространство массива, вы должны изменить входной массив на месте и сделать это с O (1) дополнительным пространством.
Пример:
Учитывая числовые значения массива = [1,1,2], функция должна возвращать новую длину 2, а первые два элемента исходного массива nums изменяются на 1,2.
Ход мыслей:
Следующий элемент массива сравнивается с текущим элементом. Если он не равен, он непосредственно присваивается следующему элементу текущего элемента, так что выполняется только один цикл.
class Solution {
/**
* @param Integer[] $nums
* @return Integer
*/
function removeDuplicates(&$nums) {
$count = count($nums);
$i = 0;
for($j=1; $j<$count; $j++){
if($nums[$j] != $nums[$i]){
$nums[++$i] = $nums[$j];
}
}
return $i+1;
}
}Время выполнения 24 МС, потребление памяти 16,8 мегабайт
Оригинал: “https://developpaper.com/leetcode-one-question-a-day-2-delete-duplicates-in-sorting-array/”