diff --git a/0001_TwoSum_BruteForce.java b/0001_TwoSum_BruteForce.java new file mode 100644 index 0000000..0f55635 --- /dev/null +++ b/0001_TwoSum_BruteForce.java @@ -0,0 +1,14 @@ +class Solution { + public int[] twoSum(int[] nums, int target) { + int n = nums.length; + + for (int i = 0; i < n; i++) { + for (int j = i + 1; j < n; j++) { + if (nums[i] + nums[j] == target) { + return new int[] {i, j}; + } + } + } + return new int[] {}; + } +} diff --git a/0011_Container_With_Most_Water.java b/0011_Container_With_Most_Water.java new file mode 100644 index 0000000..342c877 --- /dev/null +++ b/0011_Container_With_Most_Water.java @@ -0,0 +1,24 @@ +class Solution { + public int maxArea(int[] height) { + int left = 0; + int right = height.length - 1; + int maxArea = 0; + + while (left < right) { + int width = right - left; + int minHeight = Math.min(height[left], height[right]); + int area = width * minHeight; + + maxArea = Math.max(maxArea, area); + + // Move the pointer with smaller height + if (height[left] < height[right]) { + left++; + } else { + right--; + } + } + + return maxArea; + } +} diff --git a/0026_Remove_Duplicates_from_Sorted_Array.java b/0026_Remove_Duplicates_from_Sorted_Array.java new file mode 100644 index 0000000..e3b79ee --- /dev/null +++ b/0026_Remove_Duplicates_from_Sorted_Array.java @@ -0,0 +1,16 @@ +class Solution { + public int removeDuplicates(int[] nums) { + if (nums.length == 0) return 0; + + int i = 0; // slow pointer + + for (int j = 1; j < nums.length; j++) { + if (nums[j] != nums[i]) { + i++; + nums[i] = nums[j]; + } + } + + return i + 1; // number of unique elements + } +} diff --git a/0053_Maximum_Subarray.java b/0053_Maximum_Subarray.java new file mode 100644 index 0000000..4253e6b --- /dev/null +++ b/0053_Maximum_Subarray.java @@ -0,0 +1,13 @@ +class Solution { + public int maxSubArray(int[] nums) { + int max_sum = nums[0]; + int current_sum = nums[0]; + + for (int i = 1; i < nums.length; i++) { + current_sum = Math.max(nums[i], current_sum + nums[i]); + max_sum = Math.max(max_sum, current_sum); + } + + return max_sum; + } +} diff --git a/0075_Sort_Colors.java b/0075_Sort_Colors.java new file mode 100644 index 0000000..61140a4 --- /dev/null +++ b/0075_Sort_Colors.java @@ -0,0 +1,26 @@ +class Solution { + public void sortColors(int[] nums) { + int low = 0; + int mid = 0; + int high = nums.length - 1; + + while (mid <= high) { + if (nums[mid] == 0) { + int temp = nums[low]; + nums[low] = nums[mid]; + nums[mid] = temp; + low++; + mid++; + } + else if (nums[mid] == 1) { + mid++; + } + else { // nums[mid] == 2 + int temp = nums[high]; + nums[high] = nums[mid]; + nums[mid] = temp; + high--; + } + } + } +} diff --git a/0088_Merge_Sorted_Array.java b/0088_Merge_Sorted_Array.java new file mode 100644 index 0000000..45c7d15 --- /dev/null +++ b/0088_Merge_Sorted_Array.java @@ -0,0 +1,27 @@ +class Solution { + public void merge(int[] nums1, int m, int[] nums2, int n) { + + int i = m - 1; // Pointer for nums1 + int j = n - 1; // Pointer for nums2 + int k = m + n - 1; // Pointer for final position + + // Merge from the back + while (i >= 0 && j >= 0) { + if (nums1[i] > nums2[j]) { + nums1[k] = nums1[i]; + i--; + } else { + nums1[k] = nums2[j]; + j--; + } + k--; + } + + // If nums2 still has elements left + while (j >= 0) { + nums1[k] = nums2[j]; + j--; + k--; + } + } +} diff --git a/0121_Best_Time_to_Buy_and_Sell_Stock.java b/0121_Best_Time_to_Buy_and_Sell_Stock.java new file mode 100644 index 0000000..f786e6a --- /dev/null +++ b/0121_Best_Time_to_Buy_and_Sell_Stock.java @@ -0,0 +1,15 @@ +class Solution { + public int maxProfit(int[] prices) { + + int profit = 0 ; + int n = prices.length; + int min_price = prices[0]; + for(int i = 0; i