Q1) Optimized :-
// Time Complexity :- O(N)
// Space Complexity :- O(1)
string helper(string str)
{
int n = str.size();
for(int i = 0; i < n / 2; i++)
{
if(str[i] != 'a')
{
str[i] = 'a';
return str;
}
}
return "IMPOSSIBLE";
}
int main()
{
cout<<helper("aaabbaaa") << endl;
cout<<helper("aa") << endl;
return 0;
}
Q2) Using Hashmap :-
// Time Complexity :- O(N)
// Space Complexity :- O(N)
int helper(vector<int> arr)
{
int n = arr.size();
int count = 0;
unordered_map<int, int> mp;
for(int i = 0; i < n; i++)
{
int rem = arr[i] % 60;
int need = 0;
if(rem != 0)
{
need = 60 - rem;
}
count += mp[need];
mp[rem]++;
}
return count;
}
int main()
{
cout << helper({30, 60, 180, 30, 1, 90}) << endl;
return 0;
}