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();
}
}
Leetcode contest
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()) …
Java leetcode 75 easy solution 😮
Please open Telegram to view this post
VIEW IN TELEGRAM
class Solution {
public String gcdOfStrings(String str1, String str2) {
if(str1.length() < str2.length()){
return gcdOfStrings(str2,str1);
}else if(!str1.startsWith(str2)){
return "";
}else if(str2.length() == 0){
return str1;
}else{
return gcdOfStrings(str1.substring(str2.length()),str2);
}
}
}
public String gcdOfStrings(String str1, String str2) {
if(str1.length() < str2.length()){
return gcdOfStrings(str2,str1);
}else if(!str1.startsWith(str2)){
return "";
}else if(str2.length() == 0){
return str1;
}else{
return gcdOfStrings(str1.substring(str2.length()),str2);
}
}
}
Leetcode contest
class Solution { public String gcdOfStrings(String str1, String str2) { if(str1.length() < str2.length()){ return gcdOfStrings(str2,str1); }else if(!str1.startsWith(str2)){ return ""; }else if(str2.length()…
For two strings s and t, we say "t divides s" if and only if s = t + t + t + ... + t + t (i.e., t is concatenated with itself one or more times).
Given two strings str1 and str2, return the largest string x such that x divides both str1 and str2.
Example 1:
Input: str1 = "ABCABC", str2 = "ABC"
Output: "ABC"
Example 2:
Input: str1 = "ABABAB", str2 = "ABAB"
Output: "AB"
Example 3:
Input: str1 = "LEET", str2 = "CODE"
Output: ""
Given two strings str1 and str2, return the largest string x such that x divides both str1 and str2.
Example 1:
Input: str1 = "ABCABC", str2 = "ABC"
Output: "ABC"
Example 2:
Input: str1 = "ABABAB", str2 = "ABAB"
Output: "AB"
Example 3:
Input: str1 = "LEET", str2 = "CODE"
Output: ""