diff --git a/Problem_1.py b/Problem_1.py new file mode 100644 index 00000000..acb081ff --- /dev/null +++ b/Problem_1.py @@ -0,0 +1,37 @@ +# https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/ + +class Solution: + + # Brute force + # def removeDuplicates(self, nums): + # k = 2 + # freq_map = {} + # temp = [] + # for num in nums: + # freq_map[num] = freq_map.get(num,0)+1 + # if freq_map[num] <= k: + # temp.append(num) + # for i in range(len(temp)): + # nums[i] = temp[i] + # return len(temp) + + def removeDuplicates(self, nums): + slow = 1 + k = 2 + count = 1 + for fast in range(1,len(nums)): + if nums[fast] == nums[fast - 1]: + count += 1 + else: + count = 1 + + if count <= k: + nums[slow] = nums[fast] + slow += 1 + + return slow + + +nums = [0,0,1,1,1,1,2,3,3] +sl = Solution().removeDuplicates(nums) +print(sl) \ No newline at end of file diff --git a/Problem_2.py b/Problem_2.py new file mode 100644 index 00000000..6ef01885 --- /dev/null +++ b/Problem_2.py @@ -0,0 +1,19 @@ +# https://leetcode.com/problems/merge-sorted-array/ + +class Solution: + def merge(self, nums1, m, nums2, n): + i, j = m - 1, n - 1 + ptr = m + n - 1 + while i >= 0 and j >= 0: + if nums1[i] > nums2[j]: + nums1[ptr] = nums1[i] + i -= 1 + else: + nums1[ptr] = nums2[j] + j -= 1 + ptr -= 1 + + while j >= 0: + nums1[ptr] = nums2[j] + j -= 1 + ptr -= 1 diff --git a/Problem_3.py b/Problem_3.py new file mode 100644 index 00000000..9ef658a6 --- /dev/null +++ b/Problem_3.py @@ -0,0 +1,22 @@ +# https://leetcode.com/problems/search-a-2d-matrix-ii/description/ + + +class Solution: + def searchMatrix(self, matrix, target): + rows, cols = len(matrix), len(matrix[0]) + i, j = 0, cols - 1 + while j >= 0 and i < rows: + curr = matrix[i][j] + if curr == target: + return True + if target < curr: + j -= 1 + else: + i += 1 + return False + +matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]] +target = 5 + +sl = Solution().searchMatrix(matrix,target) +print(sl) \ No newline at end of file