Q1:
void interleaveQueue(queue<int>& q)
{
queue<int> queue1;
queue<int> queue2;
int size = [Link]();
int halfSize = size / 2;
for (int i = 0; i < halfSize; i++)
{
[Link]([Link]());
[Link]();
}
for (int i = 0; i < halfSize; i++)
{
[Link]([Link]());
[Link]();
}
for (int i = 0; i < halfSize; i++)
{
[Link]([Link]());
[Link]();
[Link]([Link]());
[Link]();
}
Q2:
bool isBipartite(vector<vector<int>> graph)
{
int n = [Link]();
std::vector<int> color(n, -1);
std::queue<int> q;
for (int i = 0; i < n; i++) {
if (color[i] == -1) {
color[i] = 0;
[Link](i);
while (![Link]()) {
int curr = [Link]();
[Link]();
for (int neighbor : graph[curr]) {
if (color[neighbor] == -1) {
color[neighbor] = 1 - color[curr];
[Link](neighbor);
} else if (color[neighbor] == color[curr]) {
return false;
}
}
}
}
}
return true;
}
Q3:
void bfs(vector<vector<int>> graph, int start)
{
int n = [Link]();
std::vector<bool> visited(n, false);
std::queue<int> q;
visited[start] = true;
[Link](start);
while (![Link]())
{
int current = [Link]();
[Link]();
std::cout << current << " ";
for (int neighbor : graph[current])
{
if (!visited[neighbor])
{
visited[neighbor] = true;
[Link](neighbor);
}
}
}
}
Q4:
void push(T item)
{
[Link](item);
}
T pop()
{
if (empty())
{
throw std::out_of_range("Queue is empty");
}
T frontItem = [Link](0);
[Link](0);
return frontItem;
T top()
{
if (empty())
{
throw std::out_of_range("Queue is empty");
}
return [Link](0);
}
bool empty()
{
return [Link]();
int size()
{
return [Link]();
}
void clear()
{
[Link]();
}
Q5:
long long nthNiceNumber(int n)
{
int i = 0;
std::vector<long long> niceNumbers;
niceNumbers.push_back(2);
niceNumbers.push_back(5);
if (n == 1)
{
return niceNumbers[0];
}
if (n == 2)
{
return niceNumbers[1];
}
int count = 2;
while (count < n)
{
niceNumbers.push_back(niceNumbers[i] * 10 + 2);
niceNumbers.push_back(niceNumbers[i] * 10 + 5);
count += 2;
i++;
return niceNumbers[n - 1];
}
Q6:
int secondsToBeRotten(vector<vector<int>>& grid)
{
int rows = [Link]();
int cols = grid[0].size();
int freshApples = 0;
int minutes = 0;
std::queue<std::pair<int, int>> rottenApples;
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
if (grid[i][j] == 1)
{
freshApples++;
}
else if (grid[i][j] == 2)
{
[Link]({i, j});
}
}
}
if (freshApples == 0)
{
return 0;
}
std::vector<std::pair<int, int>> directions = {{1, 0}, {-1, 0}, {0, 1}, {0, -
1}};
while (![Link]())
{
int size = [Link]();
bool hasRotten = false;
for (int i = 0; i < size; i++)
{
int x = [Link]().first;
int y = [Link]().second;
[Link]();
for (const auto& direction : directions) {
int newX = x + [Link];
int newY = y + [Link];
if (newX >= 0 && newX < rows && newY >= 0 && newY < cols &&
grid[newX][newY] == 1)
{
grid[newX][newY] = 2;
[Link]({newX, newY});
freshApples--;
hasRotten = true;
}
}
}
if (hasRotten)
{
minutes++;
}
}
if (freshApples > 0)
{
return -1;
}
return minutes;
}
Q7:
int sumOfMaxSubarray(vector<int>& nums, int k)
{
std::deque<int> dq;
int sum = 0;
for (int i = 0; i < [Link](); i++)
{
while (![Link]() && [Link]() <= i - k)
{
dq.pop_front();
}
while (![Link]() && nums[[Link]()] < nums[i])
{
dq.pop_back();
}
dq.push_back(i);
if (i >= k - 1)
{
sum += nums[[Link]()];
}
}
return sum;
}