GEEKS FOR GEEKS SOLUTIONS🫢
Open in Telegram
1 342
Subscribers
No data24 hours
-27 days
-2930 days
Posts Archive
class Solution
{ public:
void Rearrange(int arr[], int n)
{
stable_partition(arr, arr + n, [](int x) { return x < 0; });
}};
class Solution
{
void recPermute(int index,string s,set &ans,int n){
if(index==n){
ans.insert(s);
return;
}
for(int i=index;ifind_permutation(string s)
{
setans;
vector res;
recPermute(0,s,ans,s.size());
for(auto a:ans){
res.push_back(a);
}
return res;
}
};
{
void recPermute(int index,string s,set &ans,int n){
if(index==n){
ans.insert(s);
return;
}
for(int i=index;ifind_permutation(string s)
{
setans;
vector res;
recPermute(0,s,ans,s.size());
for(auto a:ans){
res.push_back(a);
}
return res;
}
class Solution {
public:
int findFactor(int n){
if(n<2) return n;
for(int i = 2;i<=sqrt(n);++i ){
if(n%i == 0)
return i;
}
return n;
}
vector leastPrimeFactor(int n) {
vector out(n+1);
for(int i = 0;i<=n;++i)
out[i] = findFactor(i);
return out;
}
};
class Solution {
public:
int findFactor(int n){
if(n<2) return n;
for(int i = 2;i<=sqrt(n);++i ){
if(n%i == 0)
return i;
}
return n;
}
vector leastPrimeFactor(int n) {
vector out(n+1);
for(int i = 0;i<=n;++i)
out[i] = findFactor(i);
return out;
}
};
class Solution {
public:
void findPreSuc(Node* root, Node*& pre, Node*& suc, int key)
{
pre = NULL;
suc = NULL;
Node* temp = root;
while (temp != NULL) {
if (temp->key > key) {
suc = temp;
temp = temp->left;
}
else {
temp = temp->right;
}
}
Node* tip = root;
while (tip != NULL) {
if (tip->key < key) {
pre = tip;
tip = tip->right;
}
else {
tip = tip->left;
}
}
}
};
class Solution
{
public:
//Function to find the least absolute difference between any node
//value of the BST and the given integer.
vector pre;
void preOrder(Node *root){
if(root==NULL) return;
pre.push_back(root->data);
preOrder(root->left);
preOrder(root->right);
}
int minDiff(Node *root, int K)
{
//Your code here
preOrder(root);
int res = INT_MAX;
for(auto x:pre){
res = min(res, abs(K-x));
}
return res;
}
};
{
string getString(char x)
{
string s(1, x);
return s;
}
public:
string reverseEqn (string s)
{
stack<string> st;
string s1="";
for(int i=0;i<s.length();i++)
{
char c=s[i];
if(c>='0' && c<='9')
s1+=c;
else
{
st.push(s1);
st.push(getString(c));
s1="";
}
}
st.push(s1);
s1="";
while(!st.empty())
s1+=st.top(),st.pop();
return s1;
}
class Solution{
public:
int maxEqualSum(int N1,int N2,int N3,vector<int> &S1,vector<int> &S2,vector<int> &S3){
long long int su1 = 0, su2 = 0, su3 = 0;
su1 = accumulate(S1.begin(), S1.end(), 0);
su2 = accumulate(S2.begin(), S2.end(), 0);
su3 = accumulate(S3.begin(), S3.end(), 0);
if(su1 == su2 && su2 == su3)
return su1;
int i = 0, j = 0, k = 0;
while(i<N1 && j<N2 && k<N3){
if(su1 == su2 && su2 == su3)
return su1;
else if(su1 > su2 su1 > su3){
su1 -= S1[i];
i++;
}
else if(su2 > su1 su2 > su3){
su2 -= S2[j];
j++;
}
else if(su3 > su2 || su3 > su1){
su3 -= S3[k];
k++;
}
}
return 0;
}
};
class Solution{
vector primes;
int maxi = 1e6;
public:
void precompute() {
vector isPrime(maxi, true);
isPrime[0] = isPrime[1] = false;
for(int i = 2; i * i <= maxi; i++) {
if(isPrime[i]) {
for(int j = i * i; j <= maxi; j += i)
isPrime[j] = false;
}
}
for(int i = 2; i <= maxi; i++)
if(isPrime[i])
primes.push_back(i);
}
void dfs(int node, vector> &g, vector &vis, int &count){
vis[node] = 1;
count++;
for(auto v: g[node]) {
if(!vis[v])
dfs(v, g, vis, count);
}
}
int helpSanta(int n, int m, vector> &g){
vector vis(n + 1);
int maxiNodes = 0;
for(int i = 1; i <= n; i++) {
if(!vis[i]) {
int count = 0;
dfs(i, g, vis, count);
maxiNodes = max(maxiNodes, count);
}
}
if(maxiNodes == 1) return -1;
return primes[maxiNodes - 1];
}
};
