Skip to content

Commit 285999d

Browse files
authored
Merge pull request #2591 from aadil42/patch-55
2 parents df465ff + 5183875 commit 285999d

File tree

1 file changed

+44
-16
lines changed

1 file changed

+44
-16
lines changed
+44-16
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,50 @@
11
/**
2-
* Linear
3-
* Time O(N) | Space O(1)
4-
* https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/
5-
* @param {number[]} nums
6-
* @return {number}
7-
*/
2+
* https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/
3+
*
4+
* Time O(n) | Space O(1)
5+
* @param {number[]} nums
6+
* @return {number}
7+
*/
88
var removeDuplicates = function(nums) {
9-
if (nums.length < 3) {
10-
return nums.length;
9+
let current = nums[0];
10+
let sameElCount = 0;
11+
12+
for(let i = 0; i < nums.length; i++) {
13+
if(current === nums[i]) {
14+
sameElCount++;
15+
}
16+
if(current !== nums[i]) {
17+
current = nums[i];
18+
sameElCount = 1;
1119
}
12-
let l = 1;
13-
let r = 2;
14-
while (r < nums.length) {
15-
if (nums[l] !== nums[r] || (nums[l] === nums[r] && nums[l-1] !== nums[r])) {
16-
l += 1;
17-
nums[l] = nums[r];
20+
if(sameElCount > 2) {
21+
nums.splice(i,1);
22+
i--;
23+
}
24+
}
25+
};
26+
27+
28+
/**
29+
* Two pointer
30+
* Time O(n^2) | Space O(1)
31+
* @param {number[]} nums
32+
* @return {number}
33+
*/
34+
var removeDuplicates2 = function(nums) {
35+
const isEdgeCase = (nums.length < 2)
36+
if (isEdgeCase) return nums.length;
37+
38+
let [ left, right ] = [ 2, 2 ];
39+
40+
while (right < nums.length) {/* Time O(N) */
41+
const isEqual = (nums[(left - 2)] === nums[right]);
42+
if (!isEqual) {
43+
nums[left] = nums[right];
44+
left += 1;
1845
}
19-
r += 1;
46+
47+
right += 1;
2048
}
21-
return l + 1;
49+
return left;
2250
};

0 commit comments

Comments
 (0)