diff --git a/contains-duplicate/hwi-middle.cpp b/contains-duplicate/hwi-middle.cpp new file mode 100644 index 000000000..4f1778df3 --- /dev/null +++ b/contains-duplicate/hwi-middle.cpp @@ -0,0 +1,7 @@ +class Solution { +public: + bool containsDuplicate(vector& nums) { + sort(nums.begin(), nums.end()); + return nums.end() != unique(nums.begin(), nums.end()); + } +}; diff --git a/house-robber/hwi-middle.cpp b/house-robber/hwi-middle.cpp new file mode 100644 index 000000000..918933851 --- /dev/null +++ b/house-robber/hwi-middle.cpp @@ -0,0 +1,15 @@ +class Solution { +public: + int rob(vector& nums) { + int len = nums.size() + 1; + vector d(len); + d[0] = 0; + d[1] = nums[0]; + for(int i = 2; i < len; ++i) + { + d[i] = max(d[i - 1], d[i - 2] + nums[i - 1]); + } + + return d[len - 1]; + } +}; diff --git a/longest-consecutive-sequence/hwi-middle.cpp b/longest-consecutive-sequence/hwi-middle.cpp new file mode 100644 index 000000000..f8e84e5f3 --- /dev/null +++ b/longest-consecutive-sequence/hwi-middle.cpp @@ -0,0 +1,39 @@ +class Solution { +public: + int longestConsecutive(vector& nums) { + if (nums.empty()) + { + return 0; + } + + unordered_set s; + s.reserve(nums.size()); + s.max_load_factor(0.4f); + s.insert(nums.begin(), nums.end()); + + int ans = 0; + for(auto& e : s) + { + if (s.contains(e - 1)) + { + continue; + } + + int con = 1; + int num = e; + while (true) + { + num++; + if(!s.contains(num)) + { + break; + } + + con++; + } + ans = max(ans, con); + } + + return ans; + } +}; diff --git a/top-k-frequent-elements/hwi-middle.cpp b/top-k-frequent-elements/hwi-middle.cpp new file mode 100644 index 000000000..c49ada2a7 --- /dev/null +++ b/top-k-frequent-elements/hwi-middle.cpp @@ -0,0 +1,24 @@ +class Solution { +public: + vector topKFrequent(vector& nums, int k) { + unordered_map m; + for(auto n : nums) + { + ++m[n]; + } + + vector> v(m.begin(), m.end()); + sort(v.begin(), v.end(), [](const auto& a, const auto& b) + { + return a.second > b.second; + }); + + vector ans; + ans.reserve(k); + for (int i = 0; i < k; ++i) + { + ans.push_back(v[i].first); + } + return ans; + } +}; diff --git a/two-sum/hwi-middle.cpp b/two-sum/hwi-middle.cpp new file mode 100644 index 000000000..ffa8cd8b5 --- /dev/null +++ b/two-sum/hwi-middle.cpp @@ -0,0 +1,23 @@ +class Solution { +public: + vector twoSum(vector& nums, int target) { + vector v(2); + unordered_map m; + for (int i = 0; i < nums.size(); ++i) + { + int num = nums[i]; + if (m.contains(target - num)) + { + v[0] = m[target - num]; + v[1] = i; + return v; + } + + m[num] = i; + } + + v[0] = -1; + v[1] = -1; + return v; + } +};