GeeksForGeeks - POTD | GFG POTD Answer
关闭频道
1 218
订阅者
无数据24 小时
-97 天
-5730 天
帖子存档
class Solution {
public:
string convertToString(Node* head)
{
string s = "";
bool l = 0;
while(head)
{
if(head->data != 0)
l = 1;
if(l)
s += ('0' + head->data);
head = head->next;
}
return s;
}
Node* subLinkedList(Node* head1, Node* head2) {
string s1 = convertToString(head1), s2 = convertToString(head2);
if(s1.size() < s2.size())
swap(s1, s2);
else if((s1.size() == s2.size()) && s1 <= s2)
swap(s1, s2);
int n = s1.size(), m = s2.size();
int carry = 0;
int j = m - 1;
for(int i = n - 1; i >= 0; i--)
{
int val = (s1[i] - '0') - carry - ((j >= 0) ? (s2[j] - '0') : 0);
if(val < 0)
{
carry = 1;
s1[i] = ('0' + 10 + val);
}
else
{
carry = 0;
s1[i] = ('0' + val);
}
j--;
}
int i = 0;
while(i < n && s1[i] == '0')
i++;
LinkedList* ans = new LinkedList();
while(i < n)
ans->insert((s1[i++] - '0'));
if(ans->head == nullptr)
ans->insert(0);
return ans->head;
}
};
Get 💻, Set 👨🏻💻, Go 🚀
🌱 Join @LeetCode_tg ✨
Get Daily Leetcode Solution.
⭐ @LeetCode_GD ⭐
3rd February : C++ Solution☝🏼
————————————————————
🙋🏻♂️Discussion ⁉️
Join ✅ @GFG_Answer
class Solution
{
public:
// Should return decimal equivalent modulo 1000000007 of binary linked list
long long unsigned int decimalValue(Node *head)
{
long long unsigned int sum=0;
while(head)
{
sum=(sum*2+head->data)%MOD;
head=head->next;
}
return sum;
}
};
2nd February : C++ Solution☝🏼
————————————————————
🙋🏻♂️Discussion ⁉️
Join ✅ @GFG_Answer
class Solution{
public:
int atoi(string s) {
int ans = 0;
int isNegative = (s[0]=='-');
for(int i=isNegative;i=0 and s[i]-'0'<=9){
ans = ans*10 + s[i]-'0';
}
else{
return -1;
}
}
return (isNegative)?-1*ans:ans;
}
};
1st February : C++ Solution☝🏼
————————————————————
🙋🏻♂️Discussion ⁉️
Join ✅ @GFG_Answer
class Solution
{
public:
//Function to check if a string is Pangram or not.
bool checkPangram (string s) {
int n=s.length();
mapm;
transform(s.begin(), s.end(), s.begin(), ::tolower);
for(int i=0;i=0 && d<=26)
m[s[i]]=1;
}
return m.size()==26;
}
};
31st January : C++ Solution☝🏼
————————————————————
🙋🏻♂️Discussion ⁉️
Join ✅ @GFG_Answer
class Solution
{
public:
//Function to insert string into TRIE.
void insert(struct TrieNode *root, string key)
{
for(auto i : key){
if(root -> children[i - 'a']){
root = root -> children[i - 'a'];
}
else{
TrieNode * new_node = getNode();
root -> children[i - 'a'] = new_node;
root = new_node;
}
}
root -> isLeaf = 1;
}
//Function to use TRIE data structure and search the given string.
bool search(struct TrieNode *root, string key)
{
for(auto i : key){
if(root -> children[i - 'a']){
root = root -> children[i - 'a'];
}
else{
return 0;
}
}
return root -> isLeaf;
}
};
30th January : C++ Solution☝🏼
————————————————————
🙋🏻♂️Discussion ⁉️
Join ✅ @GFG_Answer
class Solution
{
public:
int LCSof3 (string A, string B, string C, int n1, int n2, int n3)
{
int dp[n1+1][n2+1][n3+1];
memset(dp,0,sizeof(dp));
int ans=0;
for(int i=1;i<=n1;i++){
for(int j=1;j<=n2;j++){
for(int k=1;k<=n3;k++){
if(A[i-1]==B[j-1]&&B[j-1]==C[k-1]){
dp[i][j][k]=dp[i-1][j-1][k-1]+1;
}else{
dp[i][j][k]=max(dp[i-1][j][k],max(dp[i][j-1][k],dp[i][j][k-1]));
}
}
}
}
return dp[n1][n2][n3];
}
};
29th January : C++ Solution☝🏼
————————————————————
🙋🏻♂️Discussion ⁉️
Join ✅ @GFG_Answer
class Solution{
public:
int solve(int ind, int sum, int n, string str, vector> &dp)
{
if(ind >= n) return 1;
if(dp[ind][sum] != -1) return dp[ind][sum];
int nsum = 0, ans = 0;
for(int i = ind; i < n; i++)
{
nsum += (str[i]-'0');
if(nsum >= sum)
{
ans += solve(i+1, nsum, n, str, dp);
}
}
return dp[ind][sum] = ans;
}
int TotalCount(string str){
int n = str.length();
vector> dp(n+1, vector (915, -1));
return solve(0, 0, n, str, dp);
}
};
28th January : C++ Solution☝🏼
————————————————————
🙋🏻♂️Discussion ⁉️
Join ✅ @GFG_Answer
class Solution {
public:
vector>> dp;
long long findNthNumber(int n, int k) {
long long low = 0, high = 1e18;
dp = vector>>(2, vector>(65, vector(65, -1)));
while(low <= high){
long long mid = low + (high - low) / 2;
long long count = find(mid, k);
if(count >= n)
high = mid - 1;
else
low = mid + 1;
}
return low;
}
private:
long long find(long long n, int k){
string s = bitset<64>(n).to_string();
reset();
return dpf(s, s.length(), 1, k);
}
long long dpf(string s, int n, int tight, int k){
if(k < 0)
return 0;
if(n == 0){
return 1;
}
if(dp[tight][k][n] != -1)
return dp[tight][k][n];
int ub = (tight == 1 ? (int)(s[s.length() - n] - '0') : 1);
long long ans = 0;
for(int dig = 0; dig <= ub; dig++){
if(dig == ub)
ans += dpf(s, n - 1, tight, k - dig);
else
ans += dpf(s, n - 1, 0, k - dig);
}
return dp[tight][k][n] = ans;
}
void reset(){
for(int i = 0; i < 65; i++){
for(int j = 0; j < 65; j++){
dp[0][i][j] = dp[1][i][j] = -1;
}
}
}
};
27th January : C++ Solution☝🏼
————————————————————
🙋🏻♂️Discussion ⁉️
Join ✅ @GFG_Answer
class Solution{
public:
string matrixChainOrder(int p[], int n){
vector> dp(n, vector(n, 0));
vector> bracket(n, vector(n, 0));
for (int len = 2; len < n; len++) {
for (int i = 1; i < n - len + 1; i++) {
int j = i + len - 1;
dp[i][j] = INT_MAX;
for (int k = i; k <= j - 1; k++) {
int cost = dp[i][k] + dp[k + 1][j] + p[i - 1] * p[k] * p[j];
if (cost < dp[i][j]) {
dp[i][j] = cost;
bracket[i][j] = k;
}
}
}
}
return printParenthesis(bracket, 1, n - 1);
}
private:
string printParenthesis(const vector>& bracket, int i, int j) {
if (i == j) {
return string(1, 'A' + i - 1);
}
return "(" + printParenthesis(bracket, i, bracket[i][j]) +
printParenthesis(bracket, bracket[i][j] + 1, j) + ")";
}
};
