-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRemoveDuplicatesArray_Day8.py
More file actions
57 lines (43 loc) · 1.2 KB
/
Copy pathRemoveDuplicatesArray_Day8.py
File metadata and controls
57 lines (43 loc) · 1.2 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
48
49
50
51
52
53
54
#Brute Force Solution
# class Solution:
# def removeDuplicates(self, nums: List[int]) -> int:
# if not nums:
# return 0
# i = 0
# while i < len(nums) - 1:
# j = i + 1
# while j < len(nums) and nums[j] == nums[i]:
# # Remove duplicate at j by shifting left
# nums.pop(j)
# i += 1
# return len(nums)
from socketserver import TCPServer
#TC- O(n square)
#SC - O(1)
#Better Solution
# class Solution:
# def removeDuplicates(self, nums: List[int]) ->int:
# if not nums:
# return 0
# unique = []
# for num in nums:
# if not unique or unique[-1] != num:
# unique.append(num)
# for i in range(len(unique)):
# nums[i] = unique[i]
# return len(unique)
#TC- O(n)
#SC - O(n)
#Optimal Solution
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
if not nums:
return 0
slow = 0
for fast in range(1, len(nums)):
if nums[fast] != nums[slow]:
slow += 1
nums[slow] = nums[fast]
return slow + 1
# TC - O(n)
# SC - O(1)