From b03c6624479b16ea2a28a54496e009a501be42ff Mon Sep 17 00:00:00 2001 From: Joshua Yoon Date: Fri, 4 Feb 2022 15:33:20 -0600 Subject: [PATCH 1/2] Completed Pointers 2 --- MergeSorted.java | 25 +++++++++++++++++++++++++ README.md | 10 ---------- RemoveDup.java | 22 ++++++++++++++++++++++ Sample.java | 7 ------- Search2D.java | 20 ++++++++++++++++++++ 5 files changed, 67 insertions(+), 17 deletions(-) create mode 100644 MergeSorted.java delete mode 100644 README.md create mode 100644 RemoveDup.java delete mode 100644 Sample.java create mode 100644 Search2D.java diff --git a/MergeSorted.java b/MergeSorted.java new file mode 100644 index 00000000..dc81a4d3 --- /dev/null +++ b/MergeSorted.java @@ -0,0 +1,25 @@ +public class MergeSorted { + public void merge(int[] nums1, int m, int[] nums2, int n) { + + int i = m - 1; + int j = n - 1; + int k = nums1.length - 1; + + while (i >= 0 && j >= 0) { + + if (nums1[i] > nums2[j]) { + nums1[k] = nums1[i]; + i--; + } else { + nums1[k] = nums2[j]; + j--; + } + k--; + } + while (j >= 0) { + nums1[k] = nums2[j]; + k--; + j--; + } + } +} diff --git a/README.md b/README.md deleted file mode 100644 index e1a6f9d6..00000000 --- a/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Two-Pointers-2 - -## Problem1 (https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/) - - -## Problem2 (https://leetcode.com/problems/merge-sorted-array/) - - -## Problem3 (https://leetcode.com/problems/search-a-2d-matrix-ii/) - diff --git a/RemoveDup.java b/RemoveDup.java new file mode 100644 index 00000000..40593208 --- /dev/null +++ b/RemoveDup.java @@ -0,0 +1,22 @@ + +public class RemoveDup { + public int removeDup(int[] nums) { + int count = 1; + int i = 1; + int j = 1; + + while (i < nums.length) { + if (nums[i] == nums[i - 1]) { + count++; + } else { + count = 1; + } + if (count <= 2) { + nums[j] = nums[i]; + j++; + } + i++; + } + return j; + } +} \ No newline at end of file diff --git a/Sample.java b/Sample.java deleted file mode 100644 index 960e272d..00000000 --- a/Sample.java +++ /dev/null @@ -1,7 +0,0 @@ - -// Time Complexity : -// Space Complexity : -// Did this code successfully run on Leetcode : -// Three line explanation of solution in plain english - -// Your code here along with comments explaining your approach diff --git a/Search2D.java b/Search2D.java new file mode 100644 index 00000000..a61889ab --- /dev/null +++ b/Search2D.java @@ -0,0 +1,20 @@ +public class Search2D { + public boolean searchMatrix(int[][] m, int target) { + + int row = 0; + int col = m[0].length - 1; + + while (row <= m.length - 1 && col >= 0) { + if (m[row][col] > target) { + col--; + } else if (m[row][col] < target) { + row++; + } else { + return true; + } + } + return false; + } +} +// O(m+n) +// O(1) From 1e5a8acb42da912bb114c5a633b30fdc88e1a980 Mon Sep 17 00:00:00 2001 From: Joshua Yoon Date: Sat, 27 Jun 2026 22:14:30 -0500 Subject: [PATCH 2/2] two-pointers-2 --- MergeSorted.java | 31 +++++++++++++------------------ RemoveDup.java | 23 +++++++++-------------- Search2D.java | 19 +++++++++---------- 3 files changed, 31 insertions(+), 42 deletions(-) diff --git a/MergeSorted.java b/MergeSorted.java index dc81a4d3..5c42c085 100644 --- a/MergeSorted.java +++ b/MergeSorted.java @@ -1,25 +1,20 @@ public class MergeSorted { public void merge(int[] nums1, int m, int[] nums2, int n) { - - int i = m - 1; - int j = n - 1; - int k = nums1.length - 1; - - while (i >= 0 && j >= 0) { - - if (nums1[i] > nums2[j]) { - nums1[k] = nums1[i]; - i--; + int left = m-1; + int right = m+n-1; + int i = n-1; + while (i>=0 && left>=0) { + if (nums1[left] < nums2[i]) { + nums1[right] = nums2[i]; + right--; i--; } else { - nums1[k] = nums2[j]; - j--; - } - k--; + nums1[right] = nums1[left]; + right--; left--; + } } - while (j >= 0) { - nums1[k] = nums2[j]; - k--; - j--; + while (i>=0) { + nums1[right] = nums2[i]; + right--; i--; } } } diff --git a/RemoveDup.java b/RemoveDup.java index 40593208..e8c08f00 100644 --- a/RemoveDup.java +++ b/RemoveDup.java @@ -1,22 +1,17 @@ public class RemoveDup { public int removeDup(int[] nums) { - int count = 1; - int i = 1; - int j = 1; - - while (i < nums.length) { - if (nums[i] == nums[i - 1]) { + int slow =1; + int count =1; + for (int fast=1; fast= 0) { - if (m[row][col] > target) { - col--; - } else if (m[row][col] < target) { + int col = cols-1; + while ((row>=0 && row=0 && col