diff --git a/3-sum.java b/3-sum.java new file mode 100644 index 00000000..91614870 --- /dev/null +++ b/3-sum.java @@ -0,0 +1,41 @@ +class Solution { + public List> threeSum(int[] nums) { + int n = nums.length; + List> result = new ArrayList<>(); + Arrays.sort(nums); //nlogn + + + for (int i = 0; i < n; i++) { //O(n^2) + //outer duplicacy + if (nums[i] > 0) + break; + if (i > 0 && nums[i] == nums[i - 1]) + continue; + int left = i + 1; + int right = n - 1; + while (left < right) { + int curr = nums[i] + nums[left] + nums[right]; + + if (curr == 0) { + result.add(Arrays.asList(nums[i], nums[left], nums[right])); + left++; + right--; + //inner duplicacy + while (left < right && nums[left] == nums[left - 1]) + left++; + while (left < right && nums[right] == nums[right + 1]) + right--; + } else if (curr > 0) { + right--; + } else { + left++; + } + } + + } + return new ArrayList<>(result); + } +} + +//TC: O(n^2) +//SC: O(1) \ No newline at end of file diff --git a/container-max-water.java b/container-max-water.java new file mode 100644 index 00000000..c6a12642 --- /dev/null +++ b/container-max-water.java @@ -0,0 +1,21 @@ +class Solution { + public int maxArea(int[] height) { + int p1 = 0; + int p2 = height.length - 1; + int max = 0; + + while (p1 < p2) { + if (height[p1] <= height[p2]) { + max = Math.max(max, height[p1] * (p2-p1)); + p1++; + } else { + max = Math.max(max, height[p2] * (p2-p1)); + p2--; + } + } + return max; + } +} + +//tc: 0(logn) +//sc:O(1) \ No newline at end of file diff --git a/sort-colors.java b/sort-colors.java new file mode 100644 index 00000000..b55cdff9 --- /dev/null +++ b/sort-colors.java @@ -0,0 +1,30 @@ +class Solution { + public void sortColors(int[] nums) { + int high = nums.length - 1; + int low = 0; + int mid = 0; + + while (mid <= high) { + if (nums[mid] == 2) { + swap(nums, mid, high); + high--; + + } else if (nums[mid] == 0) { + swap(nums, mid, low); + low++; + mid++; + } else { + mid++; + } + } + } + + private void swap(int[] nums, int mid, int loh) { + int temp = nums[loh]; + nums[loh] = nums[mid]; + nums[mid] = temp; + } +} + +//TC:O(n) +//SC: O(1) \ No newline at end of file