-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRemoveDuplicatesSortedArray.php
More file actions
47 lines (45 loc) · 1.93 KB
/
Copy pathRemoveDuplicatesSortedArray.php
File metadata and controls
47 lines (45 loc) · 1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
namespace App;
/**
* Remove Duplicates from Sorted Array
*
* Given an integer array nums sorted in non-decreasing order, remove the duplicates in-place such that each unique
* element appears only once. The relative order of the elements should be kept the same.
* Since it is impossible to change the length of the array in some languages, you must instead have the result be
* placed in the first part of the array nums. More formally, if there are k elements after removing the duplicates,
* then the first k elements of nums should hold the final result. It does not matter what you leave beyond the
* first k elements. Return k after placing the final result in the first k slots of nums.
* Do not allocate extra space for another array. You must do this by modifying the input array in-place with O(1)
* extra memory.
* Example 1:
* Input: nums = [1,1,2]
* Output: 2, nums = [1,2,_]
* Explanation: Your function should return k = 2, with the first two elements of nums being 1 and 2 respectively.
* It does not matter what you leave beyond the returned k (hence they are underscores).
* Example 2:
* Input: nums = [0,0,1,1,1,2,2,3,3,4]
* Output: 5, nums = [0,1,2,3,4,_,_,_,_,_]
* Explanation: Your function should return k = 5, with the first five elements of nums being 0, 1, 2, 3, and
* 4 respectively. It does not matter what you leave beyond the returned k (hence they are underscores).
*
* https://leetcode.com/problems/remove-duplicates-from-sorted-array
*/
class RemoveDuplicatesSortedArray
{
/**
* @param array<array-key, int> $nums
* @return int
*/
public function removeDuplicates(array &$nums): int
{
$previousNumber = $nums[0];
for ($i = 1; $i < count($nums); $i++) {
if ($previousNumber === $nums[$i]) {
array_splice($nums, $i, 1);
$i--;
}
$previousNumber = $nums[$i];
}
return count($nums);
}
}