From 94d34f703ed6cac641d2294d052e6fcd8ce5369e Mon Sep 17 00:00:00 2001 From: lakshmi Date: Mon, 17 Mar 2025 22:25:39 +0530 Subject: [PATCH 01/61] Added README file - day1 --- Challenge-1/README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 Challenge-1/README.md diff --git a/Challenge-1/README.md b/Challenge-1/README.md new file mode 100644 index 0000000..7f19cae --- /dev/null +++ b/Challenge-1/README.md @@ -0,0 +1,2 @@ +Lakshmi Swetha S +lakshmisswetha@gmail.com From 66c8651af09d3b2c9ec9247ad939d4372f5d67e1 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Mon, 17 Mar 2025 22:35:33 +0530 Subject: [PATCH 02/61] Added README file - day1 --- Challenge-1/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Challenge-1/README.md b/Challenge-1/README.md index 7f19cae..2493af6 100644 --- a/Challenge-1/README.md +++ b/Challenge-1/README.md @@ -1,2 +1,3 @@ -Lakshmi Swetha S -lakshmisswetha@gmail.com +**Name:** abc + +**Email:** abc@example.com From 2f7d4fa7a414ad1851b7c05c03119f3084fc2c88 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Mon, 17 Mar 2025 22:37:59 +0530 Subject: [PATCH 03/61] Added README file - day1 --- Challenge-1/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Challenge-1/README.md b/Challenge-1/README.md index 2493af6..1a1c0d0 100644 --- a/Challenge-1/README.md +++ b/Challenge-1/README.md @@ -1,3 +1,3 @@ -**Name:** abc +**Name:** Lakshmi Swetha S -**Email:** abc@example.com +**Email:** lakshmiswetha@gmail.com From 9c1ad8a65d4648c1bad54e78b5bc735d6276c895 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Mon, 17 Mar 2025 22:39:28 +0530 Subject: [PATCH 04/61] Added README file - day1 --- Challenge-1/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Challenge-1/README.md b/Challenge-1/README.md index 1a1c0d0..a72ef7c 100644 --- a/Challenge-1/README.md +++ b/Challenge-1/README.md @@ -1,3 +1,3 @@ **Name:** Lakshmi Swetha S -**Email:** lakshmiswetha@gmail.com +**Email:** lakshmisswetha@gmail.com From 408f72b0a124b1b3c6ff02e70901c14a7d49e71f Mon Sep 17 00:00:00 2001 From: lakshmi Date: Mon, 17 Mar 2025 22:49:21 +0530 Subject: [PATCH 05/61] Added README file --- Challenge-1/README.md | 3 - README.md | 149 +----------------------------------------- 2 files changed, 2 insertions(+), 150 deletions(-) delete mode 100644 Challenge-1/README.md diff --git a/Challenge-1/README.md b/Challenge-1/README.md deleted file mode 100644 index a72ef7c..0000000 --- a/Challenge-1/README.md +++ /dev/null @@ -1,3 +0,0 @@ -**Name:** Lakshmi Swetha S - -**Email:** lakshmisswetha@gmail.com diff --git a/README.md b/README.md index d922b9d..a72ef7c 100644 --- a/README.md +++ b/README.md @@ -1,148 +1,3 @@ -# GitHub Guide for Submitting Challenge Solutions - -Welcome to the GitHub repository for coding challenges! This guide will walk you through the process of creating a branch under your name and uploading your solution files step by step. If you are new to Git and GitHub, follow these instructions carefully. - ---- - -## πŸš€ Setting Up Git and GitHub - -### 1️⃣ Install Git -If you haven't installed Git yet, download and install it from [Git's official website](https://git-scm.com/downloads). - -### 2️⃣ Create a GitHub Account -If you don’t have a GitHub account, create one at [GitHub](https://github.com/). - -### 3️⃣ Fork the Repository -1. Go to the repository URL shared by your instructor. -2. Click on the **Fork** button in the top-right corner to create a copy in your GitHub account. - -### 4️⃣ Clone the Repository Locally -1. Open **Terminal** (Linux/macOS) or **Command Prompt/Powershell** (Windows). -2. Run the following command, replacing `your-username` with your GitHub username: - - ```sh - git clone https://github.com/WeCode-Community-Dev/blind-75-challenge.git - ``` - -3. Navigate into the repository folder: - - ```sh - cd blind-75-challenge - ``` - ---- - -## 🌿 Creating a Branch Under Your Name -Each student must create a separate branch with their name before making any changes. - -1. Check the current branches: - - ```sh - git branch - ``` - -2. Create a new branch with your name (make sure this is unique - add some unique number or characters to make sure it is not already there): - - ```sh - git checkout -b your-branch-name - ``` - -3. Verify the branch was created and switched to it: - - ```sh - git branch - ``` - - Your name should now be highlighted, meaning you are on that branch. - ---- - -## πŸ” Setting Upstream and Pulling Latest Changes -Before working on a new challenge, ensure your repository is up to date. - -1. Add the original repository as the upstream remote (only required once): - - ```sh - git remote add upstream https://github.com/WeCode-Community-Dev/blind-75-challenge.git - ``` - -2. Fetch the latest changes: - - ```sh - git fetch upstream - ``` - -3. Merge the latest changes into your branch: - - ```sh - git merge upstream/main - ``` - ---- - -## ✏️ Adding Your Challenge Solution -Upload only the solution file for each challenge (e.g., `solution.py`, `solution.cpp`, `solution.java`). -you can name the file .py or .cpp or .java etc. -example: two-sum.py or two-sum.cpp or two-sum.java as per the programming language you choose - -1. Navigate to the folder for the challenge you are working on. -2. Place your solution file inside the appropriate challenge folder. - -Example structure: - -``` -repository-name/ -β”‚-- Challenge-1/ -β”‚ β”‚-- solution.py # Your file -β”‚-- Challenge-2/ -β”‚ β”‚-- solution.cpp # Another file -``` - ---- - -## πŸ“€ Committing and Pushing Your Code - -Replace the "challenge-1" with problem name - -1. Add the file you modified: - - ```sh - git add Challenge-1/solution.py - ``` - -2. Commit your changes with a meaningful message: - - ```sh - git commit -m "Added solution for Challenge 1" - ``` - -3. Push your branch to your GitHub repository: - - ```sh - git push origin your-branch-name - ``` - ---- - -## πŸ”„ Creating a Pull Request (Not Required) -Once you've pushed your changes, you need to create a **Pull Request (PR)**. - -1. Go to your GitHub repository. -2. Switch to your branch (`your-branch-name`). -3. Click on **Compare & pull request**. -4. Add a meaningful **title** and **description**. -5. Click **Create pull request**. - -Your code will now be reviewed and merged by the instructor! πŸŽ‰ - ---- - -## ❗ Important Rules -βœ… Always create a branch under your name. -βœ… Upload only the solution file (no unnecessary files or folders). -βœ… Keep your repository updated by pulling the latest changes. -βœ… Use meaningful commit messages. -βœ… Create a pull request for every challenge. - -Happy coding! πŸš€ +**Name:** Lakshmi Swetha S +**Email:** lakshmisswetha@gmail.com From 8a54e53990e4ba83b5001c96b564546e34284bd2 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Mon, 17 Mar 2025 22:54:04 +0530 Subject: [PATCH 06/61] Added solution for two sum /day-1 --- Challenge-1/two_sum.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Challenge-1/two_sum.cpp diff --git a/Challenge-1/two_sum.cpp b/Challenge-1/two_sum.cpp new file mode 100644 index 0000000..9a936b8 --- /dev/null +++ b/Challenge-1/two_sum.cpp @@ -0,0 +1,14 @@ +class Solution { +public: + vector twoSum(vector& nums, int target) { + unordered_map mpp; + for (int i=0; i Date: Tue, 18 Mar 2025 22:37:06 +0530 Subject: [PATCH 07/61] Completed two-sum/day-2 --- Challenge-2/two_sum.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Challenge-2/two_sum.cpp diff --git a/Challenge-2/two_sum.cpp b/Challenge-2/two_sum.cpp new file mode 100644 index 0000000..162745e --- /dev/null +++ b/Challenge-2/two_sum.cpp @@ -0,0 +1,16 @@ +class Solution { +public: + vector twoSum(vector& nums, int target) { + + unordered_map mpp; + for (int i=0;i Date: Wed, 19 Mar 2025 13:50:00 +0530 Subject: [PATCH 08/61] Completed buy & sell stocks - 1/day-3 --- Challenge-3/buy_and_sell_1.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Challenge-3/buy_and_sell_1.cpp diff --git a/Challenge-3/buy_and_sell_1.cpp b/Challenge-3/buy_and_sell_1.cpp new file mode 100644 index 0000000..cda0f85 --- /dev/null +++ b/Challenge-3/buy_and_sell_1.cpp @@ -0,0 +1,16 @@ +class Solution { +public: + int maxProfit(vector& prices) { + + + int mini = prices[0]; + int maxProfit = 0; + for (int i=0; i Date: Thu, 20 Mar 2025 11:39:13 +0530 Subject: [PATCH 09/61] added solution for contains duplicates/day-4 --- Challenge-4/contains_duplicates.cpp | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 Challenge-4/contains_duplicates.cpp diff --git a/Challenge-4/contains_duplicates.cpp b/Challenge-4/contains_duplicates.cpp new file mode 100644 index 0000000..f9b31a1 --- /dev/null +++ b/Challenge-4/contains_duplicates.cpp @@ -0,0 +1,7 @@ +class Solution { +public: + bool containsDuplicate(vector& nums) { + unordered_setnumSet(nums.begin(),nums.end()); + return nums.size()!=numSet.size(); + } +}; \ No newline at end of file From c176963114c0e26c64c678899f73c3d7027d68da Mon Sep 17 00:00:00 2001 From: lakshmi Date: Fri, 21 Mar 2025 21:08:49 +0530 Subject: [PATCH 10/61] added soln to get_sum --- Challenge-5/get_sum.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Challenge-5/get_sum.cpp diff --git a/Challenge-5/get_sum.cpp b/Challenge-5/get_sum.cpp new file mode 100644 index 0000000..86733d4 --- /dev/null +++ b/Challenge-5/get_sum.cpp @@ -0,0 +1,16 @@ +class Solution { +public: + int getSum(int a, int b) { + + while(b>0){ + b--; + a++; + } + while(b<0){ + b++; + a--; + } + return a; + + } +}; \ No newline at end of file From ecb690f7c2b3f53110d05a53a87766e181f9f72b Mon Sep 17 00:00:00 2001 From: lakshmi Date: Sat, 22 Mar 2025 12:00:27 +0530 Subject: [PATCH 11/61] added soln to product except self --- Challenge-6/product_except_self.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Challenge-6/product_except_self.cpp diff --git a/Challenge-6/product_except_self.cpp b/Challenge-6/product_except_self.cpp new file mode 100644 index 0000000..ba13a20 --- /dev/null +++ b/Challenge-6/product_except_self.cpp @@ -0,0 +1,21 @@ +class Solution { +public: + vector productExceptSelf(vector& nums) { + int n = nums.size(); + vectorres(n,1); + int prefix = 1; + int suffix = 1; + for (int i=0;i=0;i--){ + res[i]*=suffix; + suffix*=nums[i]; + } + + return res; + + } +}; \ No newline at end of file From 6c0635a3b78187d589cccd3593ecb29bccffa252 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Sun, 23 Mar 2025 18:52:03 +0530 Subject: [PATCH 12/61] added soln to maximum sum subarray --- Challenge-7/max_sum_subarray.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 Challenge-7/max_sum_subarray.cpp diff --git a/Challenge-7/max_sum_subarray.cpp b/Challenge-7/max_sum_subarray.cpp new file mode 100644 index 0000000..6d99736 --- /dev/null +++ b/Challenge-7/max_sum_subarray.cpp @@ -0,0 +1,18 @@ +class Solution { +public: + int maxSubArray(vector& nums) { + + int currSum = 0; + int maxSum = INT_MIN; + + for(int num : nums){ + currSum += num; + maxSum = max(maxSum,currSum); + + if(currSum<0) currSum = 0; + } + + return maxSum; + + } +}; \ No newline at end of file From 0098670c578286a975a3b17633985723ca32de19 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Mon, 24 Mar 2025 23:05:43 +0530 Subject: [PATCH 13/61] added soln to max product subarray --- Challenge-8/max_prd_subarray.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Challenge-8/max_prd_subarray.cpp diff --git a/Challenge-8/max_prd_subarray.cpp b/Challenge-8/max_prd_subarray.cpp new file mode 100644 index 0000000..8215fff --- /dev/null +++ b/Challenge-8/max_prd_subarray.cpp @@ -0,0 +1,20 @@ +class Solution { +public: + int maxProduct(vector& nums) { + + int prefix = 1, suffix = 1; + int n = nums.size(); + int ans = INT_MIN; + for(int i=0; i Date: Tue, 25 Mar 2025 19:22:04 +0530 Subject: [PATCH 14/61] added soln to minimum in rotated sorted array --- Challenge-9/min_rotated_array.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Challenge-9/min_rotated_array.cpp diff --git a/Challenge-9/min_rotated_array.cpp b/Challenge-9/min_rotated_array.cpp new file mode 100644 index 0000000..4f91a94 --- /dev/null +++ b/Challenge-9/min_rotated_array.cpp @@ -0,0 +1,23 @@ +class Solution { +public: + int findMin(vector& nums) { + int n = nums.size(); + int low = 0; + int high = n-1; + int ans = INT_MAX; + + while(low<=high){ + int mid = (low+high)/2; + if(nums[low]<=nums[mid]){ + ans = min(nums[low],ans); + low = mid + 1; + } + else{ + ans = min(nums[mid],ans); + high = mid-1; + } + } + return ans; + + } +}; \ No newline at end of file From 650ef7abe330dffa73f52b3592a43bbf40117010 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Wed, 26 Mar 2025 20:15:45 +0530 Subject: [PATCH 15/61] added soln to search in rotated sorted array --- Challenge-10/search_rot_array.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Challenge-10/search_rot_array.cpp diff --git a/Challenge-10/search_rot_array.cpp b/Challenge-10/search_rot_array.cpp new file mode 100644 index 0000000..eb9fedd --- /dev/null +++ b/Challenge-10/search_rot_array.cpp @@ -0,0 +1,30 @@ +class Solution { +public: + int search(vector& nums, int target) { + + int low = 0; + int high = nums.size()-1; + while(low<=high){ + int mid = (low + high)/2; + if (nums[mid]==target) return mid; + if (nums[low]<= nums[mid]){ + if (nums[low]<= target && nums[mid]>target){ + high = mid-1; + } + else { + low = mid+1; + } + } + else{ + if(nums[mid]=target){ + low = mid+1; + } + else{ + high = mid-1; + } + } + } + return -1; + + } +}; \ No newline at end of file From adddb9341287b23dc43d4daeb07849a0fd59720d Mon Sep 17 00:00:00 2001 From: lakshmi Date: Thu, 27 Mar 2025 22:44:32 +0530 Subject: [PATCH 16/61] added soln to 3sum --- Challenge-11/3sum.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Challenge-11/3sum.cpp diff --git a/Challenge-11/3sum.cpp b/Challenge-11/3sum.cpp new file mode 100644 index 0000000..cc7083c --- /dev/null +++ b/Challenge-11/3sum.cpp @@ -0,0 +1,33 @@ +class Solution { +public: + vector> threeSum(vector& nums) { + + int n = nums.size(); + sort(nums.begin(),nums.end()); + vector> res; + for (int i=0; i0 && nums[i]==nums[i-1]) continue; + int j = i + 1; + int k = n - 1; + while (j0){ + k--; + } + else { + vector ans = {nums[i],nums[j],nums[k]}; + res.push_back(ans); + j++; + k--; + while(j Date: Sat, 29 Mar 2025 00:10:11 +0530 Subject: [PATCH 17/61] container with max water --- Challenge-12/max_water_contain.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 Challenge-12/max_water_contain.cpp diff --git a/Challenge-12/max_water_contain.cpp b/Challenge-12/max_water_contain.cpp new file mode 100644 index 0000000..210ed39 --- /dev/null +++ b/Challenge-12/max_water_contain.cpp @@ -0,0 +1,18 @@ +class Solution { +public: + int maxArea(vector& height) { + int left = 0; + int right = height.size()-1; + int maxVol = 0; + + for (int i = left;i Date: Sat, 29 Mar 2025 11:36:43 +0530 Subject: [PATCH 18/61] added soln to count no of set bits --- Challenge-13/no_of_set_bits.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Challenge-13/no_of_set_bits.cpp diff --git a/Challenge-13/no_of_set_bits.cpp b/Challenge-13/no_of_set_bits.cpp new file mode 100644 index 0000000..04aa1e8 --- /dev/null +++ b/Challenge-13/no_of_set_bits.cpp @@ -0,0 +1,14 @@ +class Solution { +public: + int hammingWeight(int n) { + + int count = 0; + while(n>0){ + n &= (n-1); + count ++; + } + + return count; + + } +}; \ No newline at end of file From a0c78b96a556ecbf1603aa3b6df65feb21375d34 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Sun, 30 Mar 2025 11:53:37 +0530 Subject: [PATCH 19/61] added soln to counting bits --- Challenge-14/counting_bits.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 Challenge-14/counting_bits.cpp diff --git a/Challenge-14/counting_bits.cpp b/Challenge-14/counting_bits.cpp new file mode 100644 index 0000000..da15262 --- /dev/null +++ b/Challenge-14/counting_bits.cpp @@ -0,0 +1,10 @@ +class Solution { +public: + vector countBits(int n) { + vector ans(n+1); + for (int i=0;i<=n;i++){ + ans[i]=ans[i/2]+(i%2); + } + return ans; + } +}; \ No newline at end of file From 8cc5b67056f0398ea728008f74c8ebd2da3d7b3e Mon Sep 17 00:00:00 2001 From: lakshmi Date: Mon, 31 Mar 2025 11:35:19 +0530 Subject: [PATCH 20/61] missing no soln added --- Challenge-15/missing_no.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Challenge-15/missing_no.cpp diff --git a/Challenge-15/missing_no.cpp b/Challenge-15/missing_no.cpp new file mode 100644 index 0000000..8ea65f7 --- /dev/null +++ b/Challenge-15/missing_no.cpp @@ -0,0 +1,14 @@ +class Solution { +public: + int missingNumber(vector& nums) { + int n = nums.size(); + int sum = (n*(n+1))/2; + int curr = 0; + + for (int num: nums){ + curr+=num; + } + return sum-curr; + + } +}; \ No newline at end of file From 6d5bbeeb7f51da185df2845de6dc1ee3ef85e997 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Tue, 1 Apr 2025 20:15:57 +0530 Subject: [PATCH 21/61] added soln to reverse bit --- Challenge-16/reverse_bits.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 Challenge-16/reverse_bits.cpp diff --git a/Challenge-16/reverse_bits.cpp b/Challenge-16/reverse_bits.cpp new file mode 100644 index 0000000..5c7923f --- /dev/null +++ b/Challenge-16/reverse_bits.cpp @@ -0,0 +1,12 @@ +class Solution { +public: + uint32_t reverseBits(uint32_t n) { + uint32_t res = 0; + for (int i=0;i<32;i++){ + res = (res << 1) | (n&1); + n>>=1; + } + return res; + + } +}; \ No newline at end of file From c550f1e21f0e69b47fe72f97180fa0186068c1e3 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Wed, 2 Apr 2025 20:41:11 +0530 Subject: [PATCH 22/61] added soln to climbing stairs --- Challenge-17/climbing_stairs.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Challenge-17/climbing_stairs.cpp diff --git a/Challenge-17/climbing_stairs.cpp b/Challenge-17/climbing_stairs.cpp new file mode 100644 index 0000000..d483ae4 --- /dev/null +++ b/Challenge-17/climbing_stairs.cpp @@ -0,0 +1,15 @@ +class Solution { +public: + int climbStairs(int n) { + + static int memo[46] = {0}; + + if (n==1)return 1; + if(n==2)return 2; + if(memo[n]!=0)return memo[n]; + + memo[n] = climbStairs(n-1) + climbStairs(n-2); + return memo[n]; + + } +}; \ No newline at end of file From 4fd928de1a1b3c77865efe17fcd10e6c1067efbc Mon Sep 17 00:00:00 2001 From: lakshmi Date: Fri, 4 Apr 2025 00:19:37 +0530 Subject: [PATCH 23/61] soln to coin change --- Challenge-18/coin_change.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Challenge-18/coin_change.cpp diff --git a/Challenge-18/coin_change.cpp b/Challenge-18/coin_change.cpp new file mode 100644 index 0000000..f7c7c79 --- /dev/null +++ b/Challenge-18/coin_change.cpp @@ -0,0 +1,16 @@ +class Solution { +public: + int coinChange(vector& coins, int amount) { + vector dp(amount + 1, INT_MAX); + dp[0] = 0; + + for (int coin : coins) { + for (int i = coin; i <= amount; i++) { + if (dp[i - coin] != INT_MAX) { + dp[i] = min(dp[i], dp[i - coin] + 1); + } + } + } + return (dp[amount] == INT_MAX) ? -1 : dp[amount]; + } +}; From 6e5a53ae9ad893333455fb523b5a0c73bfea2637 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Fri, 4 Apr 2025 22:25:32 +0530 Subject: [PATCH 24/61] added soln to longest increasing subsequence --- Challenge-19/longest_incr_subseq.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Challenge-19/longest_incr_subseq.cpp diff --git a/Challenge-19/longest_incr_subseq.cpp b/Challenge-19/longest_incr_subseq.cpp new file mode 100644 index 0000000..5a5fcea --- /dev/null +++ b/Challenge-19/longest_incr_subseq.cpp @@ -0,0 +1,21 @@ +class Solution { +public: + int lengthOfLIS(vector& nums) { + int n = nums.size(); + vector temp; + temp.push_back(nums[0]); + + for (int i=1;itemp.back()){ + temp.push_back(nums[i]); + }else{ + int idx = lower_bound(temp.begin(),temp.end(),nums[i])-temp.begin(); + temp[idx] = nums[i]; + } + } + + return temp.size(); + + + } +}; \ No newline at end of file From 8cefb21d87d1d69099c04cad55e7bf168b74df7b Mon Sep 17 00:00:00 2001 From: lakshmi Date: Sun, 6 Apr 2025 00:00:01 +0530 Subject: [PATCH 25/61] added soln to longet common subsequence --- Challenge-20/long_common_subseq.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 Challenge-20/long_common_subseq.cpp diff --git a/Challenge-20/long_common_subseq.cpp b/Challenge-20/long_common_subseq.cpp new file mode 100644 index 0000000..7bbbf0f --- /dev/null +++ b/Challenge-20/long_common_subseq.cpp @@ -0,0 +1,24 @@ +class Solution { +public: + + int f(int i, int j, string &text1, string &text2,vector> &dp){ + if(i<0 || j<0) return 0; + + if(dp[i][j]!=-1) return dp[i][j]; + if(text1[i]==text2[j]) return dp[i][j] = 1 + f(i-1,j-1,text1,text2,dp); + + return dp[i][j] = max(f(i-1,j,text1,text2,dp),f(i,j-1,text1,text2,dp)); + } + + + int longestCommonSubsequence(string text1, string text2) { + + int n = text1.size(); + int m = text2.size(); + + vector>dp(n,vector(m,-1)); + + return f(n-1,m-1,text1,text2,dp); + + } +}; \ No newline at end of file From 092c8cf1eae33501f630bf913fc929209140c727 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Sun, 6 Apr 2025 12:34:52 +0530 Subject: [PATCH 26/61] added soln to word break --- Challenge-21/word_break.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Challenge-21/word_break.cpp diff --git a/Challenge-21/word_break.cpp b/Challenge-21/word_break.cpp new file mode 100644 index 0000000..5d960fe --- /dev/null +++ b/Challenge-21/word_break.cpp @@ -0,0 +1,27 @@ +class Solution { +public: + int dp[301]; + + int helper(int i, string s, set&wordDict){ + + if(s.size()==i) return 1; + string temp; + if(dp[i]!=-1) return dp[i]; + for (int j= i;j& wordDict) { + + setst; + memset(dp, -1, sizeof dp); + for (auto a:wordDict) st.insert(a); + return helper(0,s,st); + } +}; \ No newline at end of file From 2c40efad9b335fad8dcb7034fbc6a1e2261ebc96 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Mon, 7 Apr 2025 22:12:06 +0530 Subject: [PATCH 27/61] added soln to combination sum 4 --- Challenge-22/combination_sum_iv.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 Challenge-22/combination_sum_iv.cpp diff --git a/Challenge-22/combination_sum_iv.cpp b/Challenge-22/combination_sum_iv.cpp new file mode 100644 index 0000000..5d3ec79 --- /dev/null +++ b/Challenge-22/combination_sum_iv.cpp @@ -0,0 +1,25 @@ +class Solution { +public: + int combinationSum4(vector& nums, int target) { + + vectordp (target+1,-1); + dp[0]=1; + return helper(nums,target,dp); + + } + + int helper (vector&nums, int target, vector& dp){ + if(dp[target]!=-1) return dp[target]; + + int res = 0; + for (int num : nums){ + if (target>=num){ + res += helper(nums,target-num, dp); + } + } + + dp[target] = res; + return res; + + } +}; \ No newline at end of file From 9f0dc63a6032f489b607bf447842382b4ad28264 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Wed, 9 Apr 2025 00:50:29 +0530 Subject: [PATCH 28/61] added soln to house robber --- Challenge-23/house_robber.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Challenge-23/house_robber.cpp diff --git a/Challenge-23/house_robber.cpp b/Challenge-23/house_robber.cpp new file mode 100644 index 0000000..8799f87 --- /dev/null +++ b/Challenge-23/house_robber.cpp @@ -0,0 +1,15 @@ +class Solution { +public: + int rob(vector& nums) { + + int pre1,pre2 = 0; + for(int num : nums){ + int temp = pre1; + pre1 = max ((num + pre2),pre1); + pre2 = temp; + + } + return pre1; + + } +}; \ No newline at end of file From ffb6adc88fe68fe4aeb5ffcc65f3ec301f6ab1df Mon Sep 17 00:00:00 2001 From: lakshmi Date: Wed, 9 Apr 2025 23:21:26 +0530 Subject: [PATCH 29/61] added soln for house robber 2 --- Challenge-24/house_robber2.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 Challenge-24/house_robber2.cpp diff --git a/Challenge-24/house_robber2.cpp b/Challenge-24/house_robber2.cpp new file mode 100644 index 0000000..1169158 --- /dev/null +++ b/Challenge-24/house_robber2.cpp @@ -0,0 +1,24 @@ +class Solution { +public: + + int helper(vector &nums,int start, int end){ + int prev1 =0, prev2 = 0; + for (int i=start; i<=end; i++){ + int temp = prev1; + prev1 = max(prev2 + nums[i], prev1); + prev2 = temp; + } + return prev1; + } + int rob(vector& nums) { + + int n = nums.size(); + if (n==0) return 0; + if (n==1) return nums[0]; + if (n==2) return max (nums[0],nums[1]); + + return max(helper(nums,0,n-2), helper(nums,1,n-1)); + + + } +}; \ No newline at end of file From 541b357815c40ae729868cb24ada2dd440ff6eb9 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Fri, 11 Apr 2025 00:11:36 +0530 Subject: [PATCH 30/61] added soln for decode ways --- Challenge-25/decode_ways.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Challenge-25/decode_ways.cpp diff --git a/Challenge-25/decode_ways.cpp b/Challenge-25/decode_ways.cpp new file mode 100644 index 0000000..6ab3455 --- /dev/null +++ b/Challenge-25/decode_ways.cpp @@ -0,0 +1,23 @@ +int numDecodings(string s) { + if (s.empty() || s[0] == '0') return 0; + + int prev = 1, curr = 1; + + for (int i = 1; i < s.length(); i++) { + int temp = 0; + + + if (s[i] != '0') { + temp += curr; + } + int twoDigit = stoi(s.substr(i - 1, 2)); + if (twoDigit >= 10 && twoDigit <= 26) { + temp += prev; + } + + prev = curr; + curr = temp; + } + + return curr; +} From 621c1254086c98cd41a3a128f17ad550ffec51dc Mon Sep 17 00:00:00 2001 From: lakshmi Date: Fri, 11 Apr 2025 22:26:11 +0530 Subject: [PATCH 31/61] added soln to unique paths --- Challenge-26/unique_paths.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 Challenge-26/unique_paths.cpp diff --git a/Challenge-26/unique_paths.cpp b/Challenge-26/unique_paths.cpp new file mode 100644 index 0000000..92d597f --- /dev/null +++ b/Challenge-26/unique_paths.cpp @@ -0,0 +1,18 @@ +class Solution { +public: + + int helper(int i,int j, vector> &dp){ + if (i==0 && j==0) return 1; + if (i<0 || j<0) return 0; + if(dp[i][j]!=-1) return dp[i][j]; + int up = helper(i,j-1,dp); + int left = helper(i-1,j,dp); + return dp[i][j] = up + left; + } + + int uniquePaths(int m, int n) { + vector> dp (m, vector (n, -1)); + return helper(m-1,n-1,dp); + + } +}; \ No newline at end of file From ba0a48a35ffc96e18d9adaeec09513220f9cfa20 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Sat, 12 Apr 2025 11:42:45 +0530 Subject: [PATCH 32/61] added soln to jump game --- Challenge-27/jump_game.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 Challenge-27/jump_game.cpp diff --git a/Challenge-27/jump_game.cpp b/Challenge-27/jump_game.cpp new file mode 100644 index 0000000..97ec9f1 --- /dev/null +++ b/Challenge-27/jump_game.cpp @@ -0,0 +1,13 @@ +class Solution { +public: + bool canJump(vector& nums) { + + int maxIdx = 0; + for (int i=0; imaxIdx) return false; + maxIdx = max(maxIdx, i+nums[i]); + } + return true; + + } +}; \ No newline at end of file From 40a006cf8eb63e460ddb4e34ad5e16e58603b19e Mon Sep 17 00:00:00 2001 From: lakshmi Date: Sun, 13 Apr 2025 12:08:08 +0530 Subject: [PATCH 33/61] added soln to clone graph --- Challenge-21/word_break.cpp | 2 +- Challenge-28/clone_graph.cpp | 43 ++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 Challenge-28/clone_graph.cpp diff --git a/Challenge-21/word_break.cpp b/Challenge-21/word_break.cpp index 5d960fe..8f79f62 100644 --- a/Challenge-21/word_break.cpp +++ b/Challenge-21/word_break.cpp @@ -17,7 +17,7 @@ class Solution { } - bool wordBreak(string s, vector& wordDict) { + bool wordBreak(string s, vector& wordDict) { setst; memset(dp, -1, sizeof dp); diff --git a/Challenge-28/clone_graph.cpp b/Challenge-28/clone_graph.cpp new file mode 100644 index 0000000..7399bfe --- /dev/null +++ b/Challenge-28/clone_graph.cpp @@ -0,0 +1,43 @@ +/* +// Definition for a Node. +class Node { +public: + int val; + vector neighbors; + Node() { + val = 0; + neighbors = vector(); + } + Node(int _val) { + val = _val; + neighbors = vector(); + } + Node(int _val, vector _neighbors) { + val = _val; + neighbors = _neighbors; + } +}; +*/ + +class Solution { +public: + unordered_map cloned; + Node* cloneGraph(Node* node) { + if (!node) return nullptr; + + if (cloned.find(node) != cloned.end()){ + return cloned[node]; + } + + Node* copy = new Node(node->val); + cloned[node] = copy; + + + for(Node* neighbor: node->neighbors){ + copy->neighbors.push_back(cloneGraph(neighbor)); + } + + return copy; + + } +}; \ No newline at end of file From 6fd05c9e6c6ee2a69be659e7c21e1e0e893703fc Mon Sep 17 00:00:00 2001 From: lakshmi Date: Mon, 14 Apr 2025 17:42:29 +0530 Subject: [PATCH 34/61] added soln for course schedule --- Challenge-29/course_schedule_1.cpp | 35 ++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Challenge-29/course_schedule_1.cpp diff --git a/Challenge-29/course_schedule_1.cpp b/Challenge-29/course_schedule_1.cpp new file mode 100644 index 0000000..4fb78fd --- /dev/null +++ b/Challenge-29/course_schedule_1.cpp @@ -0,0 +1,35 @@ +class Solution { +public: + + bool dfs(int node, vector> &graph, vector &visited){ + if (visited[node]==1) return true; + if (visited[node]==2) return false; + + visited[node]=1; + + for(int neighbor : graph[node]){ + if (dfs(neighbor,graph,visited)) return true; + } + + visited[node] = 2; + return false; + } + + + + bool canFinish(int numCourses, vector>& prerequisites) { + + vector> graph(numCourses); + for (auto& p : prerequisites){ + graph[p[1]].push_back(p[0]); + } + vectorvisited(numCourses, 0); + for (int i=0; i Date: Wed, 16 Apr 2025 00:14:30 +0530 Subject: [PATCH 35/61] added soln to pacific atlantic water flow --- Challenge-30/pacific_atlantic.cpp | 49 +++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Challenge-30/pacific_atlantic.cpp diff --git a/Challenge-30/pacific_atlantic.cpp b/Challenge-30/pacific_atlantic.cpp new file mode 100644 index 0000000..37a39df --- /dev/null +++ b/Challenge-30/pacific_atlantic.cpp @@ -0,0 +1,49 @@ +class Solution { +public: + + vector dir = {0, 1, 0, -1, 0}; + + void dfs(vector>& heights, vector>& visited, int i, int j){ + visited[i][j] = true; + int m = heights.size(), n = heights[0].size(); + for (int d=0; d<4; d++){ + int x = i + dir[d]; + int y = j + dir[d+1]; + + if(x<0 || x>=m || y<0 || y>=n || visited[x][y] || heights[x][y] < heights[i][j]) continue; + + dfs(heights, visited, x, y); + } + + } + + vector> pacificAtlantic(vector>& heights) { + + int m = heights.size(); + int n = heights[0].size(); + + vector>pacific(m,vector(n,false)); + vector>atlantic(m,vector(n,false)); + vector>res; + + for (int i=0; i Date: Wed, 16 Apr 2025 23:00:02 +0530 Subject: [PATCH 36/61] added soln to number of islands --- Challenge-31/no_of_islands.cpp | 52 ++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 Challenge-31/no_of_islands.cpp diff --git a/Challenge-31/no_of_islands.cpp b/Challenge-31/no_of_islands.cpp new file mode 100644 index 0000000..8327912 --- /dev/null +++ b/Challenge-31/no_of_islands.cpp @@ -0,0 +1,52 @@ +class Solution { + + +private: + void bfs(vector>& grid , vector>& vis, int row, int col){ + vis[row][col] = 1; + queue> q; + q.push({row,col}); + int n = grid.size(); + int m = grid[0].size(); + + + int drow[] = {-1, 1, 0, 0}; + int dcol[] = {0, 0, -1, 1}; + + while (!q.empty()){ + int row = q.front().first; + int col = q.front().second; + q.pop(); + + + + for (int i = 0; i < 4; i++){ + int nrow = row + drow[i]; + int ncol = col + dcol[i]; + + if (nrow >= 0 && nrow < n && ncol >= 0 && ncol < m && + !vis[nrow][ncol] && grid[nrow][ncol] == '1'){ + vis[nrow][ncol] = 1; + q.push({nrow, ncol}); + } + } + } + } + +public: + int numIslands(vector>& grid) { + int n = grid.size(); + int m = grid[0].size(); + vector> vis(n,vector(m,0)); + int cnt = 0; + for (int row = 0; row Date: Thu, 17 Apr 2025 20:44:57 +0530 Subject: [PATCH 37/61] added soln for longest consecutive sequence --- Challenge-32/longest_consecutive_seq.cpp | 31 ++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Challenge-32/longest_consecutive_seq.cpp diff --git a/Challenge-32/longest_consecutive_seq.cpp b/Challenge-32/longest_consecutive_seq.cpp new file mode 100644 index 0000000..280359a --- /dev/null +++ b/Challenge-32/longest_consecutive_seq.cpp @@ -0,0 +1,31 @@ +class Solution { +public: + int longestConsecutive(vector& nums) { + + int n = nums.size(); + if (n==0) return 0; + int longest = 1; + + unordered_set st; + + for (int i=0; i Date: Fri, 18 Apr 2025 18:13:58 +0530 Subject: [PATCH 38/61] added soln to building where alice - bob meet --- Challenge-33/alice_bob.cpp | 39 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Challenge-33/alice_bob.cpp diff --git a/Challenge-33/alice_bob.cpp b/Challenge-33/alice_bob.cpp new file mode 100644 index 0000000..7d1364a --- /dev/null +++ b/Challenge-33/alice_bob.cpp @@ -0,0 +1,39 @@ +class Solution { +public: + vector leftmostBuildingQueries(vector& heights, vector>& queries) { + + vector>> qs(heights.size()); + priority_queue, vector>, greater>> pq; + + vector res(queries.size(),-1); + + for (int i=0; i heights[mini]) res[i]=maxi; + else { + qs[maxi].push_back({ max(heights[mini], heights[maxi]), i }); + + } + + } + + for (int i=0; i Date: Sat, 19 Apr 2025 16:12:12 +0530 Subject: [PATCH 39/61] added soln to maximum star sum of a graph --- Challenge-34/max_star_sum.cpp | 37 +++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Challenge-34/max_star_sum.cpp diff --git a/Challenge-34/max_star_sum.cpp b/Challenge-34/max_star_sum.cpp new file mode 100644 index 0000000..ea504a2 --- /dev/null +++ b/Challenge-34/max_star_sum.cpp @@ -0,0 +1,37 @@ +class Solution { +public: + int maxStarSum(vector& vals, vector>& edges, int k) { + int n = vals.size(); + vector> adj(n); + + for (auto edge: edges){ + int u = edge[0]; + int v = edge[1]; + + adj[u].push_back(vals[v]); + adj[v].push_back(vals[u]); + } + + int maxSum = INT_MIN; + + for (int i=0; ineighbors = adj[i]; + sort(neighbors.rbegin(), neighbors.rend()); + + int sum = vals[i]; + + for (int j =0; j< min(k, (int)neighbors.size()); j++){ + if (neighbors[j] > 0){ + sum += neighbors[j]; + } + else break; + } + + maxSum = max(sum, maxSum); + } + + + return maxSum; + + } +}; \ No newline at end of file From 141f870151c5a52c68d02c51d3d153d04857008b Mon Sep 17 00:00:00 2001 From: lakshmi Date: Sun, 20 Apr 2025 19:52:10 +0530 Subject: [PATCH 40/61] added soln to count unreachable pairs of nodes --- Challenge-35/unreachable_pairs_count.cpp | 37 ++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Challenge-35/unreachable_pairs_count.cpp diff --git a/Challenge-35/unreachable_pairs_count.cpp b/Challenge-35/unreachable_pairs_count.cpp new file mode 100644 index 0000000..744979c --- /dev/null +++ b/Challenge-35/unreachable_pairs_count.cpp @@ -0,0 +1,37 @@ +class Solution { + +private: + void dfs(vectoradj[], int node, vector&vis, long long &cnt){ + vis[node] = 1; + cnt++; + for(auto adjNode: adj[node]){ + if (!vis[adjNode]) dfs (adj,adjNode,vis,cnt); + } + } + + +public: + long long countPairs(int n, vector>& edges) { + + vectorvis(n,0); + vectoradj[n]; + for (auto edge: edges){ + int u = edge[0], v= edge[1]; + adj[u].push_back(v); + adj[v].push_back(u); + } + + long long ans = ((long long) n * (n-1)) / 2; + + for (int i=0; i Date: Mon, 21 Apr 2025 22:47:58 +0530 Subject: [PATCH 41/61] added soln to insert interval --- Challenge-36/insert_interval.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Challenge-36/insert_interval.cpp diff --git a/Challenge-36/insert_interval.cpp b/Challenge-36/insert_interval.cpp new file mode 100644 index 0000000..955705c --- /dev/null +++ b/Challenge-36/insert_interval.cpp @@ -0,0 +1,27 @@ +class Solution { +public: + vector> insert(vector>& intervals, vector& newInterval) { + + int n = intervals.size(); + int i = 0; + + vector> result; + + while(i Date: Tue, 22 Apr 2025 23:07:05 +0530 Subject: [PATCH 42/61] added soln to merge intervals --- Challenge-37/merge_intervals.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Challenge-37/merge_intervals.cpp diff --git a/Challenge-37/merge_intervals.cpp b/Challenge-37/merge_intervals.cpp new file mode 100644 index 0000000..050d0f2 --- /dev/null +++ b/Challenge-37/merge_intervals.cpp @@ -0,0 +1,28 @@ +class Solution { +public: + vector> merge(vector>& intervals) { + int n = intervals.size(); + sort(intervals.begin(), intervals.end()); + vector> ans; + + for(int i=0; i Date: Wed, 23 Apr 2025 21:32:59 +0530 Subject: [PATCH 43/61] added soln to overlapping intervals --- Challenge-38/overlapping_intervals | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 Challenge-38/overlapping_intervals diff --git a/Challenge-38/overlapping_intervals b/Challenge-38/overlapping_intervals new file mode 100644 index 0000000..1e8b096 --- /dev/null +++ b/Challenge-38/overlapping_intervals @@ -0,0 +1,24 @@ +class Solution { +public: + int eraseOverlapIntervals(vector>& intervals) { + if (intervals.empty()) return 0; + + + sort(intervals.begin(), intervals.end(), [](const vector& a, const vector& b) { + return a[1] < b[1]; + }); + + int count = 0; + int prevEnd = intervals[0][1]; + + for (int i = 1; i < intervals.size(); ++i) { + if (intervals[i][0] < prevEnd) { + ++count; + } else { + prevEnd = intervals[i][1]; + } + } + + return count; + } +}; From 2c629c84b214da925b599c3f1a7bb852bbbcdeb2 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Wed, 23 Apr 2025 21:36:00 +0530 Subject: [PATCH 44/61] added soln to non overlapping intervals --- .../{overlapping_intervals => non_overlapping_intervals.cpp} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Challenge-38/{overlapping_intervals => non_overlapping_intervals.cpp} (100%) diff --git a/Challenge-38/overlapping_intervals b/Challenge-38/non_overlapping_intervals.cpp similarity index 100% rename from Challenge-38/overlapping_intervals rename to Challenge-38/non_overlapping_intervals.cpp From 7375095a9bc4d7c41c65480d43ef1a095dff5797 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Thu, 24 Apr 2025 12:56:16 +0530 Subject: [PATCH 45/61] added soln to meeting rooms --- Challenge-39/meeting_rooms.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Challenge-39/meeting_rooms.cpp diff --git a/Challenge-39/meeting_rooms.cpp b/Challenge-39/meeting_rooms.cpp new file mode 100644 index 0000000..bb5e9ad --- /dev/null +++ b/Challenge-39/meeting_rooms.cpp @@ -0,0 +1,19 @@ +bool compareIntervals(const Interval& a, const Interval& b) { + return a.start < b.start; +} + +class Solution { + +public: + bool canAttendMeetings(vector& intervals) { + sort(intervals.begin(), intervals.end(), compareIntervals); + + for (int i = 1; i < intervals.size(); ++i) { + if (intervals[i].start < intervals[i - 1].end) { + return false; + } + } + + return true; + } +}; \ No newline at end of file From 9f92713cca9f072efad734671439a43e429f3f66 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Sat, 26 Apr 2025 01:22:04 +0530 Subject: [PATCH 46/61] added soln to meeting rooms II --- Challenge-40/meeting_rooms_2.cpp | 40 ++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Challenge-40/meeting_rooms_2.cpp diff --git a/Challenge-40/meeting_rooms_2.cpp b/Challenge-40/meeting_rooms_2.cpp new file mode 100644 index 0000000..3add26c --- /dev/null +++ b/Challenge-40/meeting_rooms_2.cpp @@ -0,0 +1,40 @@ +/** + * Definition of Interval: + * class Interval { + * public: + * int start, end; + * Interval(int start, int end) { + * this->start = start; + * this->end = end; + * } + * } + */ + +class Solution { +public: + int minMeetingRooms(vector& intervals) { + if (intervals.empty()) return 0; + + vector starts, ends; + for (const auto& interval : intervals) { + starts.push_back(interval.start); + ends.push_back(interval.end); + } + + sort(starts.begin(), starts.end()); + sort(ends.begin(), ends.end()); + + int rooms = 0, end_ptr = 0; + + for (int i = 0; i < starts.size(); ++i) { + if (starts[i] < ends[end_ptr]) { + rooms++; + } else { + end_ptr++; + } + } + + return rooms; + } +}; + From 1cc57ca542a7bcdc48c4d0e5463e2ecfce5fa0ad Mon Sep 17 00:00:00 2001 From: lakshmi Date: Sat, 26 Apr 2025 11:47:35 +0530 Subject: [PATCH 47/61] added soln to reverse linked list --- Challenge-41/reverse_linked_list.cpp | 29 ++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Challenge-41/reverse_linked_list.cpp diff --git a/Challenge-41/reverse_linked_list.cpp b/Challenge-41/reverse_linked_list.cpp new file mode 100644 index 0000000..b440397 --- /dev/null +++ b/Challenge-41/reverse_linked_list.cpp @@ -0,0 +1,29 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode* reverseList(ListNode* head) { + + ListNode* temp = head; + ListNode* prev = NULL; + + while (temp!= NULL){ + ListNode* front = temp->next; + temp->next = prev; + prev = temp; + temp = front; + } + + return prev; + + + } +}; \ No newline at end of file From 73ae00cee379c793fa4e83a21ac720dc77676d6c Mon Sep 17 00:00:00 2001 From: lakshmi Date: Sun, 27 Apr 2025 12:02:07 +0530 Subject: [PATCH 48/61] added soln to detect cycle in linked list --- Challenge-42/linked_list_cycle.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 Challenge-42/linked_list_cycle.cpp diff --git a/Challenge-42/linked_list_cycle.cpp b/Challenge-42/linked_list_cycle.cpp new file mode 100644 index 0000000..615e591 --- /dev/null +++ b/Challenge-42/linked_list_cycle.cpp @@ -0,0 +1,25 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + bool hasCycle(ListNode *head) { + ListNode *slow = head; + ListNode *fast = head; + + while(fast!=NULL && fast->next != NULL){ + slow = slow->next; + fast = fast->next->next; + + if (slow==fast) return true; + + } + + return false; + } +}; \ No newline at end of file From 9c793f44e7be60379ceaaa15af1a5075e40dfb25 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Mon, 28 Apr 2025 23:14:45 +0530 Subject: [PATCH 49/61] added soln to merge two sorted linked list --- Challenge-43/merge_sorted_linked_list.cpp | 41 +++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 Challenge-43/merge_sorted_linked_list.cpp diff --git a/Challenge-43/merge_sorted_linked_list.cpp b/Challenge-43/merge_sorted_linked_list.cpp new file mode 100644 index 0000000..1f10167 --- /dev/null +++ b/Challenge-43/merge_sorted_linked_list.cpp @@ -0,0 +1,41 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) { + + ListNode* t1 = list1; + ListNode* t2 = list2; + + ListNode* dummy = new ListNode (-1); + ListNode* temp = dummy; + + + while(t1 != NULL && t2 != NULL){ + if (t1->val < t2->val){ + temp->next = t1; + temp = t1; + t1 = t1->next; + }else{ + temp->next = t2; + temp = t2; + t2 = t2->next; + } + } + + if (t1) temp->next = t1; + else temp->next = t2; + + + return dummy->next; + + } +}; \ No newline at end of file From 423e390773e62887f8686c5cc568e1ca8bea918a Mon Sep 17 00:00:00 2001 From: lakshmi Date: Tue, 29 Apr 2025 23:51:09 +0530 Subject: [PATCH 50/61] added soln for merge k sorted linked list --- Challenge-44/merge_k_sorted_linked_list.cpp | 36 +++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Challenge-44/merge_k_sorted_linked_list.cpp diff --git a/Challenge-44/merge_k_sorted_linked_list.cpp b/Challenge-44/merge_k_sorted_linked_list.cpp new file mode 100644 index 0000000..4780cf0 --- /dev/null +++ b/Challenge-44/merge_k_sorted_linked_list.cpp @@ -0,0 +1,36 @@ +class Solution { +public: + struct Compare { + bool operator()(ListNode* a, ListNode* b) { + return a->val > b->val; // Min-heap: smaller value comes first + } + }; + + ListNode* mergeKLists(vector& lists) { + priority_queue, Compare> minHeap; + + // Push the head of each non-null list into the heap + for (auto list : lists) { + if (list != nullptr) { + minHeap.push(list); + } + } + + ListNode dummy(0); // Dummy node to simplify list operations + ListNode* tail = &dummy; + + while (!minHeap.empty()) { + ListNode* node = minHeap.top(); + minHeap.pop(); + + tail->next = node; + tail = tail->next; + + if (node->next != nullptr) { + minHeap.push(node->next); + } + } + + return dummy.next; + } +}; From 18cf877772c9e420c9748b59c6a51ebfd2ed8010 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Thu, 1 May 2025 00:39:39 +0530 Subject: [PATCH 51/61] added soln to remove node from end --- Challenge-45/remove_node_from_end.cpp | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Challenge-45/remove_node_from_end.cpp diff --git a/Challenge-45/remove_node_from_end.cpp b/Challenge-45/remove_node_from_end.cpp new file mode 100644 index 0000000..2b5c878 --- /dev/null +++ b/Challenge-45/remove_node_from_end.cpp @@ -0,0 +1,30 @@ +class Solution { +public: + ListNode* removeNthFromEnd(ListNode* head, int n) { + + ListNode* dummy = new ListNode(0, head); + ListNode* first = dummy; + ListNode* second = dummy; + + + for (int i = 0; i <= n; ++i) { + first = first->next; + } + + + while (first != nullptr) { + first = first->next; + second = second->next; + } + + + ListNode* nodeToDelete = second->next; + second->next = second->next->next; + delete nodeToDelete; + + + ListNode* newHead = dummy->next; + delete dummy; + return newHead; + } +}; From ac7fd74ff34082471c649b3c69a43222ea1e0a57 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Thu, 1 May 2025 20:31:27 +0530 Subject: [PATCH 52/61] added soln to reorder linked list --- Challenge-46/reorder_list.cpp | 43 +++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Challenge-46/reorder_list.cpp diff --git a/Challenge-46/reorder_list.cpp b/Challenge-46/reorder_list.cpp new file mode 100644 index 0000000..ce515a2 --- /dev/null +++ b/Challenge-46/reorder_list.cpp @@ -0,0 +1,43 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + void reorderList(ListNode* head) { + if (!head || !head->next) return; + + ListNode* slow = head; + ListNode* fast = head; + while (fast->next && fast->next->next) { + slow = slow->next; + fast = fast->next->next; + } + + ListNode* prev = nullptr; + ListNode* curr = slow->next; + while (curr) { + ListNode* next_temp = curr->next; + curr->next = prev; + prev = curr; + curr = next_temp; + } + slow->next = nullptr; + ListNode* first = head; + ListNode* second = prev; + while (second) { + ListNode* tmp1 = first->next; + ListNode* tmp2 = second->next; + first->next = second; + second->next = tmp1; + first = tmp1; + second = tmp2; + } + } +}; From df691d8e43addcc4542c95bc30bc908a4fd8c40c Mon Sep 17 00:00:00 2001 From: lakshmi Date: Fri, 2 May 2025 16:10:57 +0530 Subject: [PATCH 53/61] added soln to set matrix zeroes --- Challenge-47/set_matrix_zeroes.cpp | 37 ++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Challenge-47/set_matrix_zeroes.cpp diff --git a/Challenge-47/set_matrix_zeroes.cpp b/Challenge-47/set_matrix_zeroes.cpp new file mode 100644 index 0000000..0bac7db --- /dev/null +++ b/Challenge-47/set_matrix_zeroes.cpp @@ -0,0 +1,37 @@ +class Solution { +public: + void setZeroes(vector>& matrix) { + int n = matrix.size(); + int m = matrix[0].size(); + int col0 = 1; + for (int i=0; i Date: Sat, 3 May 2025 12:32:23 +0530 Subject: [PATCH 54/61] added soln to spiral matrix --- Challenge-48/spiral_matrix.cpp | 42 ++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Challenge-48/spiral_matrix.cpp diff --git a/Challenge-48/spiral_matrix.cpp b/Challenge-48/spiral_matrix.cpp new file mode 100644 index 0000000..06c170f --- /dev/null +++ b/Challenge-48/spiral_matrix.cpp @@ -0,0 +1,42 @@ +class Solution { +public: + vector spiralOrder(vector>& matrix) { + int n = matrix.size(); + int m = matrix[0].size(); + + int top = 0, bottom = n-1; + int left = 0, right = m-1; + + vectorans; + + + while (top<=bottom && left<=right){ + for (int i=left;i<=right;i++){ + ans.push_back(matrix[top][i]); + } + top++; + + for (int i= top;i <=bottom; i++){ + ans.push_back(matrix[i][right]); + } + right--; + + if(top<=bottom){ + for(int i= right; i>=left; i--){ + ans.push_back(matrix[bottom][i]); + } + bottom--; + } + + if(left<=right){ + for(int i=bottom; i>=top; i--){ + ans.push_back(matrix[i][left]); + } + left++; + } + } + + return ans; + + } +}; \ No newline at end of file From ffb94b7a4cc4e2b380191f6c845a742aa8ec3cd0 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Sun, 4 May 2025 22:56:49 +0530 Subject: [PATCH 55/61] added soln to rotate matrix --- Challenge-49/rotate_matrix.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Challenge-49/rotate_matrix.cpp diff --git a/Challenge-49/rotate_matrix.cpp b/Challenge-49/rotate_matrix.cpp new file mode 100644 index 0000000..daed7fe --- /dev/null +++ b/Challenge-49/rotate_matrix.cpp @@ -0,0 +1,17 @@ +class Solution { +public: + void rotate(vector>& mat) { + + int n = mat.size(); + for (int i=0; i Date: Tue, 6 May 2025 00:50:47 +0530 Subject: [PATCH 56/61] added soln to word earch --- Challenge-50/word_search.cpp | 45 ++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Challenge-50/word_search.cpp diff --git a/Challenge-50/word_search.cpp b/Challenge-50/word_search.cpp new file mode 100644 index 0000000..63730de --- /dev/null +++ b/Challenge-50/word_search.cpp @@ -0,0 +1,45 @@ +class Solution { +public: + bool exist(vector>& board, string word) { + int m = board.size(); + int n = board[0].size(); + + for (int i = 0; i < m; ++i) { + for (int j = 0; j < n; ++j) { + if (dfs(board, word, i, j, 0)) { + return true; + } + } + } + return false; + } + +private: + bool dfs(vector>& board, string& word, int i, int j, int idx) { + if (idx == word.length()) return true; + + + if (i < 0 || i >= board.size() || + j < 0 || j >= board[0].size() || + board[i][j] != word[idx]) { + return false; + } + + char temp = board[i][j]; + board[i][j] = '#'; + + + vector> directions = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; + bool found = false; + + for (auto [dx, dy] : directions) { + if (dfs(board, word, i + dx, j + dy, idx + 1)) { + found = true; + break; + } + } + + board[i][j] = temp; + return found; + } +}; From 0daa928386b7fa4a3dd969d45a5a6d1b595796d9 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Tue, 6 May 2025 22:17:07 +0530 Subject: [PATCH 57/61] added soln to longest substring without repeating characters --- .../longest_substr_without_repeat.cpp | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Challenge-51/longest_substr_without_repeat.cpp diff --git a/Challenge-51/longest_substr_without_repeat.cpp b/Challenge-51/longest_substr_without_repeat.cpp new file mode 100644 index 0000000..6c8b3da --- /dev/null +++ b/Challenge-51/longest_substr_without_repeat.cpp @@ -0,0 +1,22 @@ +class Solution { +public: + int lengthOfLongestSubstring(string s) { + unordered_map charIndexMap; + int maxLength = 0; + int left = 0; + + for (int right = 0; right < s.length(); ++right) { + char currentChar = s[right]; + + + if (charIndexMap.count(currentChar) && charIndexMap[currentChar] >= left) { + left = charIndexMap[currentChar] + 1; + } + + charIndexMap[currentChar] = right; + maxLength = max(maxLength, right - left + 1); + } + + return maxLength; + } +}; \ No newline at end of file From da3bd3c4cb7d312a3c8fce4f47a930a3e3bc4e13 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Wed, 7 May 2025 22:59:40 +0530 Subject: [PATCH 58/61] added soln to longest repeating character replacement --- .../longest_repeat_char_replacement.cpp | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Challenge-52/longest_repeat_char_replacement.cpp diff --git a/Challenge-52/longest_repeat_char_replacement.cpp b/Challenge-52/longest_repeat_char_replacement.cpp new file mode 100644 index 0000000..60fcf8c --- /dev/null +++ b/Challenge-52/longest_repeat_char_replacement.cpp @@ -0,0 +1,23 @@ +class Solution { +public: + int characterReplacement(string s, int k) { + vector count(26, 0); + int maxFreq = 0; + int left = 0; + int maxLength = 0; + + for (int right = 0; right < s.size(); ++right) { + count[s[right] - 'A']++; + maxFreq = max(maxFreq, count[s[right] - 'A']); + + while ((right - left + 1) - maxFreq > k) { + count[s[left] - 'A']--; + left++; + } + + maxLength = max(maxLength, right - left + 1); + } + + return maxLength; + } +}; From aadfb955092c5c1c87b32e876d97a7a626d9fd46 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Sat, 10 May 2025 22:37:32 +0530 Subject: [PATCH 59/61] added soln for minimum window substring --- Challenge-53/min_window_substring.cpp | 45 +++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Challenge-53/min_window_substring.cpp diff --git a/Challenge-53/min_window_substring.cpp b/Challenge-53/min_window_substring.cpp new file mode 100644 index 0000000..291b2e1 --- /dev/null +++ b/Challenge-53/min_window_substring.cpp @@ -0,0 +1,45 @@ +class Solution { +public: + string minWindow(string s, string t) { + if (s.empty() || t.empty()) return ""; + + + int t_count[128] = {0}; + int window[128] = {0}; + + for (char c : t) t_count[c]++; + + int left = 0, right = 0; + int min_len = INT_MAX, min_start = 0; + int required = t.length(); + + while (right < s.length()) { + char c = s[right]; + if (t_count[c] > 0) { + if (window[c] < t_count[c]) + required--; + window[c]++; + } + + + while (required == 0) { + if (right - left + 1 < min_len) { + min_len = right - left + 1; + min_start = left; + } + + char l = s[left]; + if (t_count[l] > 0) { + window[l]--; + if (window[l] < t_count[l]) + required++; + } + left++; + } + + right++; + } + + return min_len == INT_MAX ? "" : s.substr(min_start, min_len); + } +}; From aed674ce36fa72953baa8d6a52a138d5c357c796 Mon Sep 17 00:00:00 2001 From: lakshmi Date: Sat, 10 May 2025 22:40:50 +0530 Subject: [PATCH 60/61] added soln for is anagram --- Challenge-54/is_anagram.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Challenge-54/is_anagram.cpp diff --git a/Challenge-54/is_anagram.cpp b/Challenge-54/is_anagram.cpp new file mode 100644 index 0000000..8c31587 --- /dev/null +++ b/Challenge-54/is_anagram.cpp @@ -0,0 +1,19 @@ +class Solution { +public: + bool isAnagram(string s, string t) { + if (s.length() != t.length()) return false; + + int count[26] = {0}; + + for (int i = 0; i < s.length(); i++) { + count[s[i] - 'a']++; + count[t[i] - 'a']--; + } + + for (int i = 0; i < 26; i++) { + if (count[i] != 0) return false; + } + + return true; + } +}; From 9f2afc192934a180c3d64355ef89f2958f6ad60f Mon Sep 17 00:00:00 2001 From: lakshmi Date: Sat, 10 May 2025 22:43:26 +0530 Subject: [PATCH 61/61] added soln for group anagrams --- Challenge-55/group_anagram.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Challenge-55/group_anagram.cpp diff --git a/Challenge-55/group_anagram.cpp b/Challenge-55/group_anagram.cpp new file mode 100644 index 0000000..b22b319 --- /dev/null +++ b/Challenge-55/group_anagram.cpp @@ -0,0 +1,19 @@ +class Solution { +public: + vector> groupAnagrams(vector& strs) { + unordered_map> anagramGroups; + + for (const string& str : strs) { + string sortedStr = str; + sort(sortedStr.begin(), sortedStr.end()); + anagramGroups[sortedStr].push_back(str); + } + + vector> result; + for (auto& pair : anagramGroups) { + result.push_back(move(pair.second)); + } + + return result; + } +};