1
+ package com .leetcode .arrays ;
2
+
3
+ import java .util .Arrays ;
4
+
5
+ /**
6
+ * Level: Easy
7
+ * Problem Link: https://leetcode.com/problems/remove-duplicates-from-sorted-array/
8
+ * Problem Description:
9
+ * Given a sorted array nums, remove the duplicates in-place such that each element appear only once and return the new length.
10
+ * <p>
11
+ * Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
12
+ * Example 1:
13
+ * <p>
14
+ * Given nums = [1,1,2]
15
+ * <p>
16
+ * Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively.
17
+ * <p>
18
+ * It doesn't matter what you leave beyond the returned length.
19
+ *
20
+ * @author rampatra
21
+ * @since 2019-04-24
22
+ */
23
+ public class RemoveDuplicates {
24
+
25
+ /**
26
+ * Time complexity: O(n)
27
+ * where,
28
+ * n = no. of elements in the array
29
+ * <p>
30
+ * Runtime: <a href="https://leetcode.com/submissions/detail/224719750/">1 ms</a>.
31
+ *
32
+ * @param nums
33
+ * @return
34
+ */
35
+ public static int removeDuplicatesInSortedArray (int [] nums ) {
36
+ int insertIndex = 0 ;
37
+
38
+ for (int i = 1 ; i < nums .length ; i ++) {
39
+ if (nums [i ] != nums [i - 1 ]) {
40
+ nums [++insertIndex ] = nums [i ];
41
+ }
42
+ }
43
+
44
+ return insertIndex + 1 ;
45
+ }
46
+
47
+ public static void main (String [] args ) {
48
+ int [] arr = new int []{1 , 1 , 2 };
49
+ System .out .println (removeDuplicatesInSortedArray (arr ));
50
+ System .out .println (Arrays .toString (arr ));
51
+
52
+ arr = new int []{0 , 0 , 1 , 1 , 1 , 2 , 2 , 3 , 3 , 4 };
53
+ System .out .println (removeDuplicatesInSortedArray (arr ));
54
+ System .out .println (Arrays .toString (arr ));
55
+
56
+ arr = new int []{0 , 1 , 2 , 3 , 4 , 5 };
57
+ System .out .println (removeDuplicatesInSortedArray (arr ));
58
+ System .out .println (Arrays .toString (arr ));
59
+ }
60
+ }
0 commit comments