From b5e449cde0a386d9aaa1c386e96ab8983c1a1f61 Mon Sep 17 00:00:00 2001 From: PDKhan Date: Sun, 30 Mar 2025 23:03:38 -0700 Subject: [PATCH 1/6] contains-duplicate solution --- contains-duplicate/PDKhan.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 contains-duplicate/PDKhan.cpp diff --git a/contains-duplicate/PDKhan.cpp b/contains-duplicate/PDKhan.cpp new file mode 100644 index 000000000..552add450 --- /dev/null +++ b/contains-duplicate/PDKhan.cpp @@ -0,0 +1,15 @@ +class Solution { + public: + bool containsDuplicate(vector& nums) { + unordered_map map; + + for(int i = 0; i < nums.size(); i++){ + map[nums[i]]++; + + if(map[nums[i]] == 2) + return true; + } + + return false; + } + }; From 0ddb3f9b745182398a7e2ca1a54fcb5d9e7f2389 Mon Sep 17 00:00:00 2001 From: PDKhan Date: Sun, 30 Mar 2025 23:04:00 -0700 Subject: [PATCH 2/6] two-sum solution --- two-sum/PDKhan.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 two-sum/PDKhan.cpp diff --git a/two-sum/PDKhan.cpp b/two-sum/PDKhan.cpp new file mode 100644 index 000000000..ddea0e1fa --- /dev/null +++ b/two-sum/PDKhan.cpp @@ -0,0 +1,18 @@ +class Solution { + public: + vector twoSum(vector& nums, int target) { + unordered_map Map; + + for(int i = 0; i < nums.size(); i++){ + int diff = target - nums[i]; + + if(Map.find(diff) != Map.end()){ + return { Map[diff], i }; + } + + Map[nums[i]] = i; + } + + return {}; + } + }; From 7708bda95e0df23f7e24491d9351b5ca1219c57b Mon Sep 17 00:00:00 2001 From: PDKhan Date: Sun, 30 Mar 2025 23:04:24 -0700 Subject: [PATCH 3/6] top-k-frequent-elements solution --- top-k-frequent-elements/PDKhan.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 top-k-frequent-elements/PDKhan.cpp diff --git a/top-k-frequent-elements/PDKhan.cpp b/top-k-frequent-elements/PDKhan.cpp new file mode 100644 index 000000000..9a6993da0 --- /dev/null +++ b/top-k-frequent-elements/PDKhan.cpp @@ -0,0 +1,26 @@ +class Solution { + public: + vector topKFrequent(vector& nums, int k) { + unordered_map map; + vector result; + + for(int i = 0; i < nums.size(); i++){ + map[nums[i]]++; + } + + priority_queue, vector>, greater>> minHeap; + + for(auto i : map){ + minHeap.push({i.second, i.first}); + if(minHeap.size() > k) + minHeap.pop(); + } + + while(!minHeap.empty()){ + result.push_back(minHeap.top().second); + minHeap.pop(); + } + + return result; + } + }; From 2f93acbcf886af6af20fc69ddc7f805a9c39bac8 Mon Sep 17 00:00:00 2001 From: PDKhan Date: Sun, 30 Mar 2025 23:05:00 -0700 Subject: [PATCH 4/6] longest-consecutive-sequence solution --- longest-consecutive-sequence/PDKhan.cpp | 30 +++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 longest-consecutive-sequence/PDKhan.cpp diff --git a/longest-consecutive-sequence/PDKhan.cpp b/longest-consecutive-sequence/PDKhan.cpp new file mode 100644 index 000000000..7c8634b98 --- /dev/null +++ b/longest-consecutive-sequence/PDKhan.cpp @@ -0,0 +1,30 @@ +class Solution { + public: + int longestConsecutive(vector& nums) { + int cnt = 1; + int max = 0; + + if(nums.size() == 0) + return 0; + + sort(nums.begin(), nums.end()); + + for(int i = 1; i < nums.size(); i++){ + if(nums[i] == nums[i-1] + 1) + cnt++; + else if(nums[i] == nums[i-1]) + continue; + else{ + if(max < cnt) + max = cnt; + + cnt = 1; + } + } + + if(max < cnt) + return cnt; + + return max; + } + }; From 2939e2c64072180023c782c4bf052444922173fd Mon Sep 17 00:00:00 2001 From: PDKhan Date: Sun, 30 Mar 2025 23:17:54 -0700 Subject: [PATCH 5/6] house-robber solution --- house-robber/PDKhan.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 house-robber/PDKhan.cpp diff --git a/house-robber/PDKhan.cpp b/house-robber/PDKhan.cpp new file mode 100644 index 000000000..a86069c77 --- /dev/null +++ b/house-robber/PDKhan.cpp @@ -0,0 +1,22 @@ +class Solution { + public: + int rob(vector& nums) { + vector dp; + + for(int i = 0; i < nums.size() + 3; i++){ + dp.push_back(0); + } + + for(int i = nums.size()-1; i >= 0; i--){ + if(dp[i+2] + nums[i] > dp[i+3] + nums[i]) + dp[i] = dp[i+2] + nums[i]; + else + dp[i] = dp[i+3] + nums[i]; + } + + if(dp[0] > dp[1]) + return dp[0]; + else + return dp[1]; + } + }; From ba7b2a848d5a3f66038feffe5c15f042f414f45c Mon Sep 17 00:00:00 2001 From: PDKhan Date: Tue, 1 Apr 2025 23:05:58 -0700 Subject: [PATCH 6/6] change space O(1) --- house-robber/PDKhan.cpp | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/house-robber/PDKhan.cpp b/house-robber/PDKhan.cpp index a86069c77..83bca3f46 100644 --- a/house-robber/PDKhan.cpp +++ b/house-robber/PDKhan.cpp @@ -1,22 +1,22 @@ class Solution { public: int rob(vector& nums) { - vector dp; - - for(int i = 0; i < nums.size() + 3; i++){ - dp.push_back(0); + int n = nums.size(); + + if(n == 0) return 0; + if(n == 1) return nums[0]; + if(n == 2) return max(nums[0], nums[1]); + + int prev2 = nums[0]; + int prev1 = max(nums[0], nums[1]); + + + for(int i = 2; i < n; i++){ + int curr = max(prev1, prev2 + nums[i]); + prev2 = prev1; + prev1 = curr; } - - for(int i = nums.size()-1; i >= 0; i--){ - if(dp[i+2] + nums[i] > dp[i+3] + nums[i]) - dp[i] = dp[i+2] + nums[i]; - else - dp[i] = dp[i+3] + nums[i]; - } - - if(dp[0] > dp[1]) - return dp[0]; - else - return dp[1]; + + return prev1; } };