File tree 1 file changed +60
-0
lines changed
1 file changed +60
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * Linear
3
+ * https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/
4
+ * Time O(n) | Space O(1)
5
+ * @param {number[] } nums
6
+ * @return {number }
7
+ */
8
+ var removeDuplicates = function ( nums ) {
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 ;
19
+ }
20
+ if ( sameElCount > 2 ) {
21
+ nums . splice ( i , 1 ) ;
22
+ i -- ;
23
+ }
24
+ }
25
+ } ;
26
+
27
+ /**
28
+ * Two pointer
29
+ * Time O(n) | Space O(1)
30
+ * @param {number[] } nums
31
+ * @return {number }
32
+ */
33
+ var removeDuplicates2 = function ( nums ) {
34
+
35
+ let current = nums [ 0 ] ;
36
+ let sameElCount = 0 ;
37
+
38
+
39
+ for ( let i = 0 ; i < nums . length ; i ++ ) {
40
+ if ( current === nums [ i ] ) {
41
+ sameElCount ++ ;
42
+ }
43
+ if ( current !== nums [ i ] ) {
44
+ current = nums [ i ] ;
45
+ sameElCount = 1 ;
46
+ }
47
+ if ( sameElCount > 2 ) {
48
+ let left = i ;
49
+ let right = i + 1 ;
50
+ let count = 1 ;
51
+ while ( nums [ left ] === nums [ right ] ) {
52
+ count ++ ;
53
+ right ++ ;
54
+ }
55
+ nums . splice ( left , count ) ;
56
+ i -- ;
57
+ }
58
+ }
59
+ return nums . length ;
60
+ } ;
You can’t perform that action at this time.
0 commit comments