diff --git a/longest_substr_without_repeating_chars.cpp b/longest_substr_without_repeating_chars.cpp new file mode 100644 index 0000000..1cef566 --- /dev/null +++ b/longest_substr_without_repeating_chars.cpp @@ -0,0 +1,16 @@ +#include +#include +using namespace std; + +int lengthOfLongestSubstring(string s) { + unordered_set seen; + int maxLen = 0, left = 0; + for (int right = 0; right < s.size(); right++) { + while (seen.find(s[right]) != seen.end()) { + seen.erase(s[left++]); + } + seen.insert(s[right]); + maxLen = max(maxLen, right - left); + } + return maxLen; +} diff --git a/merge_intervals.cpp b/merge_intervals.cpp new file mode 100644 index 0000000..914994b --- /dev/null +++ b/merge_intervals.cpp @@ -0,0 +1,17 @@ +#include +#include +#include +using namespace std; + +vector> merge(vector>& intervals) { + sort(intervals.begin(), intervals.end()); + vector> merged; + for (auto interval : intervals) { + if (merged.empty() || merged.back()[1] < interval[1]) { + merged.push_back(interval); + } else { + merged.back()[1] = max(merged.back()[1], interval[1]); + } + } + return merged; +} diff --git a/peak_element.cpp b/peak_element.cpp new file mode 100644 index 0000000..85dbb69 --- /dev/null +++ b/peak_element.cpp @@ -0,0 +1,15 @@ +#include +#include +using namespace std; + +int findPeakElement(vector& nums) { + int left = 0, right = nums.size(); + while (left < right) { + int mid = left + (right - left) / 2; + if (nums[mid] > nums[mid + 1]) + right = mid; + else + left = mid + 1; + } + return left; +}