leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

commit 202a36afa7f6d9bc8f16cf5151a8fff4763c773c
parent 4e6b28661ee53cda09b1fcfc95fae9e360a1efb3
author Dimitrije Dobrota <mail@dimitrijedobrota.com>
date Thu, 25 Jan 2024 21:05:16 +0000

2 Random Problems

Diffstat:
A Problems/1670.cpp | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A Problems/2924.cpp | ++++++++++++
M README.md | ++

3 files changed, 85 insertions(+), 0 deletions(-)


diff --git a/ Problems/1670.cpp b/ Problems/1670.cpp

@@ -0,0 +1,71 @@
class FrontMiddleBackQueue {
public:
deque<int> left, right;
void balance() {
if (size(left) > size(right)) {
right.push_front(left.back());
left.pop_back();
}
if (size(left) + 1 < size(right)) {
left.push_back(right.front());
right.pop_front();
}
}
void pushFront(int val) {
left.push_front(val);
balance();
}
void pushMiddle(int val) {
left.push_back(val);
balance();
}
void pushBack(int val) {
right.push_back(val);
balance();
}
int popFront() {
if (size(left) == 0) {
if (size(right) == 0) return -1;
const int res = right.front();
right.pop_front();
return res;
}
const int res = left.front();
left.pop_front();
balance();
return res;
}
int popMiddle() {
if (size(right) + size(left) == 0) return -1;
if (size(left) < size(right)) {
const int res = right.front();
right.pop_front();
return res;
} else {
const int res = left.back();
left.pop_back();
balance();
return res;
}
}
int popBack() {
if (size(right) == 0) {
if (size(left) == 0) return -1;
const int res = left.back();
left.pop_back();
return res;
}
const int res = right.back();
right.pop_back();
balance();
return res;
}
};

diff --git a/ Problems/2924.cpp b/ Problems/2924.cpp

@@ -0,0 +1,12 @@
class Solution {
public:
int findChampion(int n, const vector<vector<int>> &edges) const {
bitset<128> bs;
for (const auto &edge : edges)
bs.set(edge[1]);
if (bs.count() + 1 != n) return -1;
for (int i = 0; i < n; i++)
if (!bs.test(i)) return i;
return -2;
}
};

diff --git a/ README.md b/ README.md

@@ -830,6 +830,7 @@ for solving problems. | 1664 | Medium | [Ways to Make a Fair Array](Problems/1664.cpp) | | 1667 | Easy | [Fix Names in a Table](Problems/1667.cpp) | | 1669 | Medium | [Merge In Between Linked Lists](Problems/1669.cpp) |
| 1670 | Medium | [Design Front Middle Back Queue](Problems/1670.cpp) |
| 1672 | Easy | [Richest Customer Wealth](Problems/1672.cpp) | | 1675 | Hard | [Minimize Deviation in Array](Problems/1675.cpp) | | 1679 | Medium | [Max Number of K-Sum Pairs](Problems/1679.cpp) |

@@ -1097,6 +1098,7 @@ for solving problems. | 2895 | Medium | [Minimum Processing Time](Problems/2895.cpp) | | 2900 | Medium | [Longest Unequal Adjacent Groups Subsequence I](Problems/2900.cpp) | | 2914 | Medium | [Minimum Number of Changes to Make Binary String Beautiful](Problems/2914.cpp) |
| 2924 | Medium | [Find Champion II](Problems/2924.cpp) |
| 2947 | Medium | [Count Beautiful Substrings I](Problems/2947.cpp) | | 2966 | Medium | [Divide Array Into Arrays With Max Difference](Problems/2966.cpp) | | 2997 | Medium | [Minimum Number of Operations to Make Array XOR Equal to K](Problems/2997.cpp) |