GEEKS FOR GEEKS SOLUTIONS🫢
Open in Telegram
1 342
Subscribers
No data24 hours
-27 days
-2930 days
Posts Archive
int bitMagic(int n, vector &arr) {
// code here
int ans=0,i=0,j=n-1;
while(i
class Solution {
public:
int arrayOperations(int n, vector &arr) {
// code here
int count=0,flag = 1,flag2 = 0;// count means no of operation
// flag2=1 denotes there is atleast one zero in the array
// value of flag changes when zero or non-zero value is
// encountered(means if there are continous zero/non-zero
// value then it doesn't changes)
for(int i=0;i
class Solution {
public:
int minimumSum(string s) {
int N = s.size();
int ans = 1e9;
for (int i = 0; i < (N / 2); i++) {
if (s[i] != s[N - i - 1]) {
if (s[i] == '?' s[N - i - 1] == '?') {
if (s[i] != '?') {
s[N - i - 1] = s[i];
} else {
s[i] = s[N - i - 1];
}
} else {
ans = -1;
break;
}
}
}
if (ans == -1) return ans;
int idx = N - 1, prev = -1, cur = -1;
for (int i = 0; i < (N / 2);) {
if (s[i] == '?') {
while (i < (N / 2) && s[i] == '?') {
i++;
cur = i;
}
if (prev == -1 and cur == N / 2) {
for (int j = 0; j < N / 2; j++) s[j] = 'a';
if (N & 1) s[N / 2] = 'a';
} else if (prev != -1 and cur == N / 2) {
for (int j = prev + 1; j < cur; j++) s[j] = s[prev];
if (N & 1) s[N / 2] = s[prev];
} else if (prev == -1 and cur != N / 2) {
for (int j = 0; j < cur; j++) s[j] = s[cur];
} else {
int dis = abs((s[cur] - 'a') - (s[prev] - 'a'));
char prevChar = s[prev], curChar = s[cur];
if (prevChar > curChar) swap(prevChar, curChar);
char ch;
if (dis == 0 dis == 1)
ch = s[cur];
else {
dis /= 2;
ch = (char)((prevChar - 'a') + dis + 'a');
}
for (int j = prev + 1; j < cur; j++) s[j] = ch;
}
} else {
prev = i;
i++;
}
}
for (int i = 0; i < (N / 2); i++) s[N - i - 1] = s[i];
int sum = 0;
for (int i = 1; i < N; i++) {
sum += abs(s[i] - s[i - 1]);
}
return sum;
}
};
class Solution {
public:
int minimumSum(string s) {
int N = s.size();
int ans = 1e9;
for (int i = 0; i < (N / 2); i++) {
if (s[i] != s[N - i - 1]) {
if (s[i] == '?' s[N - i - 1] == '?') {
if (s[i] != '?') {
s[N - i - 1] = s[i];
} else {
s[i] = s[N - i - 1];
}
} else {
ans = -1;
break;
}
}
}
if (ans == -1) return ans;
int idx = N - 1, prev = -1, cur = -1;
for (int i = 0; i < (N / 2);) {
if (s[i] == '?') {
while (i < (N / 2) && s[i] == '?') {
i++;
cur = i;
}
if (prev == -1 and cur == N / 2) {
for (int j = 0; j < N / 2; j++) s[j] = 'a';
if (N & 1) s[N / 2] = 'a';
} else if (prev != -1 and cur == N / 2) {
for (int j = prev + 1; j < cur; j++) s[j] = s[prev];
if (N & 1) s[N / 2] = s[prev];
} else if (prev == -1 and cur != N / 2) {
for (int j = 0; j < cur; j++) s[j] = s[cur];
} else {
int dis = abs((s[cur] - 'a') - (s[prev] - 'a'));
char prevChar = s[prev], curChar = s[cur];
if (prevChar > curChar) swap(prevChar, curChar);
char ch;
if (dis == 0 dis == 1)
ch = s[cur];
else {
dis /= 2;
ch = (char)((prevChar - 'a') + dis + 'a');
}
for (int j = prev + 1; j < cur; j++) s[j] = ch;
}
} else {
prev = i;
i++;
}
}
for (int i = 0; i < (N / 2); i++) s[N - i - 1] = s[i];
int sum = 0;
for (int i = 1; i < N; i++) {
sum += abs(s[i] - s[i - 1]);
}
return sum;
}
};
class Solution{
public:
int totalCuts(int n,int K,vector &A){
int post[n];
post[n-1] = A[n-1];
int mini = A[n-1];
for(int i=n-2;i>=0;i--)
mini = min(mini,A[i]),post[i] = mini;
int ans = 0, maxi = A[0];
for(int i=0;i=K) ans++;
}
return ans;
}
};
const int mod = 1e9+7;
void multiply(long long int F[2][2], long long int M[2][2]);
void power(long long int F[2][2], long long int n);
int fib(long long int n)
{
long long int F[2][2] = {{1, 1}, {1, 0}};
if (n == 0) return 0;
power(F, n - 1);
return F[0][0];
}
void power(long long int F[2][2], long long int n)
{
if(n == 0 || n == 1) return;
long long int M[2][2] = {{1, 1}, {1, 0}};
power(F, n / 2);
multiply(F, F);
if (n % 2 != 0)
multiply(F, M);
}
void multiply(long long int F[2][2], long long int M[2][2])
{
int x = ((F[0][0]%mod * M[0][0]%mod)%mod + (F[0][1]%mod * M[1][0]%mod)%mod)%mod;
int y = ((F[0][0]%mod * M[0][1]%mod)%mod + (F[0][1]%mod * M[1][1]%mod)%mod)%mod;
int z = ((F[1][0]%mod * M[0][0]%mod)%mod + (F[1][1]%mod * M[1][0]%mod)%mod)%mod;
int w = ((F[1][0]%mod * M[0][1]%mod)%mod + (F[1][1]%mod * M[1][1]%mod)%mod)%mod;
F[0][0] = x;
F[0][1] = y;
F[1][0] = z;
F[1][1] = w;
}
class Solution {
public:
int countStrings(long long int n)
{
int res = fib(n+2);
return res;
}
};
class Solution{
public:
int modulo(string s,int m)
{
//code here
int ans=1;
int sol=0;
if(s[s.size()-1]=='1'){
sol=((sol%m)+(ans%m))%m;
}
for(int i = s.size()-2 ; i>=0 ; i--){
ans=(ans*2)%m;
if(s[i]=='1'){
sol=((sol%m)+(ans%m))%m;
}
}
return sol;
}
};
class Solution{
public:
string stringMirror(string str){
// Code here
string res;
res=str[0];
for(int i=1; istr[i]) res+=str[i];
else if(i>1 && str[i-1]==str[i]) res+=str[i];
else break;
}
string temp = res;
reverse(res.begin(),res.end());
return (temp+res);
}
};
class Solution {
public:
vector> dp;
int solve( int N, int K, int target, vector &coins){
if(K==0){
if(target==0){
return 1;
}else{
return 0;
}
}
if(dp[K][target]!=-1) return dp[K][target];
int ans=0;
for(int i=0; i=coins[i])
if(solve(N, K-1, target-coins[i], coins)) return dp[K][target]=1;
}
return dp[K][target]=0;
}
bool makeChanges(int N, int K, int target, vector &coins) {
// code here
dp=vector>(K+1, vector(target+1, -1));
return solve(N, K, target, coins);
}
};
