In this channel help tou u with weekly contest join us and improve ur rank )
Leetcode Weekly 419
A
C++
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
class Solution {
public:
vector<int> findXSum(vector<int>& nums, int k, int x) {
int n = nums.size();
vector<int> answer;
for (int i = 0; i <= n - k; ++i) {
unordered_map<int, int> frequency;
for (int j = i; j < i + k; ++j) {
frequency[nums[j]]++;
}
vector<pair<int, int>> freqList;
for (const auto& entry : frequency) {
freqList.push_back({entry.second, entry.first});
}
sort(freqList.begin(), freqList.end(), [](const pair<int, int>& a, const pair<int, int>& b) {
if (a.first != b.first) return a.first > b.first;
return a.second > b.second;
});
int sum = 0;
int count = 0;
for (const auto& entry : freqList) {
int frequency = entry.first;
int value = entry.second;
if (count >= x) break;
sum += frequency * value;
count++;
}
answer.push_back(sum);
}
return answer;
}
};
Leetcode Weekly 419
A
C++
A
C++
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
class Solution {
public:
vector<int> findXSum(vector<int>& nums, int k, int x) {
int n = nums.size();
vector<int> answer;
for (int i = 0; i <= n - k; ++i) {
unordered_map<int, int> frequency;
for (int j = i; j < i + k; ++j) {
frequency[nums[j]]++;
}
vector<pair<int, int>> freqList;
for (const auto& entry : frequency) {
freqList.push_back({entry.second, entry.first});
}
sort(freqList.begin(), freqList.end(), [](const pair<int, int>& a, const pair<int, int>& b) {
if (a.first != b.first) return a.first > b.first;
return a.second > b.second;
});
int sum = 0;
int count = 0;
for (const auto& entry : freqList) {
int frequency = entry.first;
int value = entry.second;
if (count >= x) break;
sum += frequency * value;
count++;
}
answer.push_back(sum);
}
return answer;
}
};
Leetcode Weekly 419
A
C++
class Solution {
public:
pair<bool, int> checkPerfect(TreeNode* node) {
if (!node) return {true, 0};
auto leftResult = checkPerfect(node->left);
auto rightResult = checkPerfect(node->right);
if (leftResult.first && rightResult.first && leftResult.second == rightResult.second) {
return {true, leftResult.second + rightResult.second + 1};
}
return {false, 0};
}
void gatherPerfectSizes(TreeNode* node, vector<int>& subtreeSizes) {
if (!node) return;
auto result = checkPerfect(node);
if (result.first) {
subtreeSizes.push_back(result.second);
}
gatherPerfectSizes(node->left, subtreeSizes);
gatherPerfectSizes(node->right, subtreeSizes);
}
int kthLargestPerfectSubtree(TreeNode* root, int k) {
vector<int> subtreeSizes;
gatherPerfectSizes(root, subtreeSizes);
if (subtreeSizes.empty()) return -1;
sort(subtreeSizes.rbegin(), subtreeSizes.rend());
return (k <= subtreeSizes.size()) ? subtreeSizes[k - 1] : -1;
}
};
Leetcode Weekly 419
B
C++
public:
pair<bool, int> checkPerfect(TreeNode* node) {
if (!node) return {true, 0};
auto leftResult = checkPerfect(node->left);
auto rightResult = checkPerfect(node->right);
if (leftResult.first && rightResult.first && leftResult.second == rightResult.second) {
return {true, leftResult.second + rightResult.second + 1};
}
return {false, 0};
}
void gatherPerfectSizes(TreeNode* node, vector<int>& subtreeSizes) {
if (!node) return;
auto result = checkPerfect(node);
if (result.first) {
subtreeSizes.push_back(result.second);
}
gatherPerfectSizes(node->left, subtreeSizes);
gatherPerfectSizes(node->right, subtreeSizes);
}
int kthLargestPerfectSubtree(TreeNode* root, int k) {
vector<int> subtreeSizes;
gatherPerfectSizes(root, subtreeSizes);
if (subtreeSizes.empty()) return -1;
sort(subtreeSizes.rbegin(), subtreeSizes.rend());
return (k <= subtreeSizes.size()) ? subtreeSizes[k - 1] : -1;
}
};
Leetcode Weekly 419
B
C++
Leetcode Weekly 419
B
C++
class Solution {
public:
pair<bool, int> checkPerfect(TreeNode* node) {
if (!node) return {true, 0};
auto leftResult = checkPerfect(node->left);
auto rightResult = checkPerfect(node->right);
if (leftResult.first && rightResult.first && leftResult.second == rightResult.second) {
return {true, leftResult.second + rightResult.second + 1};
}
return {false, 0};
}
void gatherPerfectSizes(TreeNode* node, vector<int>& subtreeSizes) {
if (!node) return;
auto result = checkPerfect(node);
if (result.first) {
subtreeSizes.push_back(result.second);
}
gatherPerfectSizes(node->left, subtreeSizes);
gatherPerfectSizes(node->right, subtreeSizes);
}
int kthLargestPerfectSubtree(TreeNode* root, int k) {
vector<int> subtreeSizes;
gatherPerfectSizes(root, subtreeSizes);
if (subtreeSizes.empty()) return -1;
sort(subtreeSizes.rbegin(), subtreeSizes.rend());
return (k <= subtreeSizes.size()) ? subtreeSizes[k - 1] : -1;
}
};
Leetcode Weekly 419
B
C++
B
C++
class Solution {
public:
pair<bool, int> checkPerfect(TreeNode* node) {
if (!node) return {true, 0};
auto leftResult = checkPerfect(node->left);
auto rightResult = checkPerfect(node->right);
if (leftResult.first && rightResult.first && leftResult.second == rightResult.second) {
return {true, leftResult.second + rightResult.second + 1};
}
return {false, 0};
}
void gatherPerfectSizes(TreeNode* node, vector<int>& subtreeSizes) {
if (!node) return;
auto result = checkPerfect(node);
if (result.first) {
subtreeSizes.push_back(result.second);
}
gatherPerfectSizes(node->left, subtreeSizes);
gatherPerfectSizes(node->right, subtreeSizes);
}
int kthLargestPerfectSubtree(TreeNode* root, int k) {
vector<int> subtreeSizes;
gatherPerfectSizes(root, subtreeSizes);
if (subtreeSizes.empty()) return -1;
sort(subtreeSizes.rbegin(), subtreeSizes.rend());
return (k <= subtreeSizes.size()) ? subtreeSizes[k - 1] : -1;
}
};
Leetcode Weekly 419
B
C++
class Solution {
public String mergeAlternately(String word1, String word2) {
StringBuilder merged = new StringBuilder();
int i = 0, j = 0;
while (i < word1.length() || j < word2.length()) {
if (i < word1.length()) merged.append(word1.charAt(i++));
if (j < word2.length()) merged.append(word2.charAt(j++));
}
return merged.toString();
}
}
public String mergeAlternately(String word1, String word2) {
StringBuilder merged = new StringBuilder();
int i = 0, j = 0;
while (i < word1.length() || j < word2.length()) {
if (i < word1.length()) merged.append(word1.charAt(i++));
if (j < word2.length()) merged.append(word2.charAt(j++));
}
return merged.toString();
}
}