diff --git a/contains-duplicate/Sbeo-Joe.cpp b/contains-duplicate/Sbeo-Joe.cpp new file mode 100644 index 0000000000..71bf63df8b --- /dev/null +++ b/contains-duplicate/Sbeo-Joe.cpp @@ -0,0 +1,15 @@ +class Solution { +public: + bool containsDuplicate(vector& nums) { + set s; + + for(const auto& n : nums) { + auto iter = s.find(n); + if(iter != s.end()){ + return true; + } + s.insert(n); + } + return false; + } +}; diff --git a/house-robber/Sbeo-Joe.cpp b/house-robber/Sbeo-Joe.cpp new file mode 100644 index 0000000000..86fa032700 --- /dev/null +++ b/house-robber/Sbeo-Joe.cpp @@ -0,0 +1,26 @@ +class Solution { +public: + int map[101]; + int rob(vector& nums) { + + memset(map, -1, sizeof(map)); + int ret = -1; + for(int i = 0; i < nums.size(); i++){ + ret = max(ret, solve(nums, i)); + } + return ret; + } + + int solve(vector& nums, int here) { + if(here >= nums.size()) return 0; + + int& ret = map[here]; + if(ret != -1) return ret; + ret = nums[here]; + for(int there = here + 2; there < nums.size(); there++){ + ret = max(ret, solve(nums, there) + nums[here]); + } + return ret; + } + +}; diff --git a/longest-consecutive-sequence/Sbeo-Joe.cpp b/longest-consecutive-sequence/Sbeo-Joe.cpp new file mode 100644 index 0000000000..058310ef2d --- /dev/null +++ b/longest-consecutive-sequence/Sbeo-Joe.cpp @@ -0,0 +1,23 @@ +class Solution { +public: + int longestConsecutive(vector& nums) { + if(nums.size() == 0) return 0; + set us{nums.begin(), nums.end()}; + int ret = 1; + vector vec(us.begin(), us.end()); + int prevNum = vec[0]; + int ret_candi = 1; + for(int i = 1; i < vec.size(); i++){ + if(vec[i] - vec[i-1] == 1){ + ret_candi++; + ret = max(ret, ret_candi); + continue; + } else { + ret_candi = 1; + continue; + } + } + + return ret; + } +}; diff --git a/top-k-frequent-elements/Sbeo-Joe.cpp b/top-k-frequent-elements/Sbeo-Joe.cpp new file mode 100644 index 0000000000..cec4d4a3cb --- /dev/null +++ b/top-k-frequent-elements/Sbeo-Joe.cpp @@ -0,0 +1,22 @@ +class Solution { +public: + vector topKFrequent(vector& nums, int k) { + // value, count + unordered_map um; + for(auto& n : nums){ + um[n]++; + } + + //value, count + vector> vec(um.begin(), um.end()); + sort(vec.begin(), vec.end(), + [](const auto& a, const auto& b) { return a.second > b.second;}); + + vector ret; + for(int i=0; i< k; i++){ + ret.push_back(vec[i].first); + } + + return ret; + } +}; diff --git a/two-sum/Sbeo-Joe.cpp b/two-sum/Sbeo-Joe.cpp new file mode 100644 index 0000000000..7455f8cd89 --- /dev/null +++ b/two-sum/Sbeo-Joe.cpp @@ -0,0 +1,30 @@ +class Solution { +public: + vector twoSum(vector& nums, int target) { + + for(int i = 0; i < nums.size() - 1; i++){ + for(int j = i + 1; j < nums.size(); j++){ + if(nums[i] + nums[j] == target){ + return std::vector{i, j}; + } + } + } + return {}; + } +}; + +class Solution { +public: + vector twoSum(vector& nums, int target) { + // value, index; + unordered_map um; + for(int i = 0; i < nums.size(); i++){ + int gap = target - nums[i]; + if(um.count(gap)){ + return {um[gap], i}; + } + um[nums[i]] = i; + } + return {}; + } +};