Posts

Showing posts from September, 2021

Equal

 https://www.interviewbit.com/problems/equal/ vector< int > Solution::equal(vector< int > &A) {     vector< int > result;     vector< int > ans;           int  n = A.size();          unordered_map< int , vector< int > > val;      for ( int  i= 0 ;i<n- 1 ;i++) {          for ( int  j=i+ 1 ;j<n;j++) {              int  sum = A[i] + A[j];                           if (val.find(sum)!=val.end()) {               ...

Minimum Distances

 https://www.hackerrank.com/challenges/minimum-distances/problem int   minimumDistances ( vector < int >   a )   {      map < int , int > m ;           int   maxans = INT_MAX ;      int   flag = false ;      int   ans = INT_MAX ;    for ( int   i = 0 ; i < a . size (); i ++){               if ( m . find ( a [ i ])!= m . end ()){            flag = true ;            ans = i - m [ a [ i ]];        }        maxans = min ( ans , maxans );        m [ a [ i ]]= i ;    }    if ( flag == false )   return   - 1 ;    return   maxans ; }  

Contains Duplicate II

 https://leetcode.com/problems/contains-duplicate-ii/ class Solution { public:     bool containsNearbyDuplicate(vector<int>& nums, int k) {         unordered_map<int,int>m;         for(int i=0;i<nums.size();i++){             if(m.count(nums[i])){                 int diff=abs(i-m[nums[i]]);                 if(diff<=k){                     return true;                 }             }             m[nums[...

Contains Duplicate

 https://leetcode.com/problems/contains-duplicate/ class Solution { public:     bool containsDuplicate(vector<int>& nums) {         sort(nums.begin(),nums.end());         for(int i=0;i<nums.size()-1;i++){             if(nums[i]==nums[i+1]){                 return true;             }           }         return false;     } };  class Solution { public:     bool containsDuplicate(vector<int>& nums) {         map<int,int>m;         int n=nums.size();         for(int i=0;i<n;i++)...

Find Permutation

 https://www.interviewbit.com/problems/find-permutation/ vector< int > Solution::findPerm( const  string A,  int  B) {     vector< int > res;      int  max = B;      int  min = 1 ;      for ( int  i=B- 2  ; i>= 0   ; i--){          if (A[i] ==  'I' ){             res.push_back(max);             max--;         }          else {             res.push_back(min);             min++;         }  ...

sort-array-by-parity-ii

 https://leetcode.com/problems/sort-array-by-parity-ii/ vector<int> sortArrayByParityII(vector<int>& arr) {                  for(int i=0, j=1;i<arr.size()&&j<arr.size();){                     if(arr[i]%2==0){                i+=2;            }                       else if(arr[j]%2!=0){                 j+=2;             }                          else(swa...

Best Time to Buy and Sell Stocks II

 https://www.interviewbit.com/problems/best-time-to-buy-and-sell-stocks-ii/ int  Solution::maxProfit( const  vector< int > &A) {     vector< int > temp(A.size(),  0 );           int  buy = A[ 0 ], flag =  0 , i =  1 , max_sell = INT_MIN;      int  sol =  0 ;      while (i < A.size()){          int  diff = A[i] - A[i- 1 ];          if (diff >  0 ){             sol = sol + diff;         }         i++;     }           retur...

Swap Nodes in Pairs

https://leetcode.com/problems/swap-nodes-in-pairs/    class Solution { public:     ListNode* swapPairs(ListNode* head) {        if(!head || !head->next) return head;         ListNode* temp;         temp = head->next;         head->next = swapPairs(head->next->next);         temp->next = head;                  return temp;     } };     // We use a dummy head node to make handling head operations simpler         ListNode *dummy = new ListNode(-1), *tail = dummy;         // add the dummy node to list         tail->next = head;           ...

Beautiful Triplets

 https://www.hackerrank.com/challenges/beautiful-triplets/problem int   beautifulTriplets ( int   d ,   vector < int >   arr )   { int   n = arr . size (); int   sum   =   0 ;      for ( int   i   =   0 ;   i   <   n - 2 ;   ++ i )   {          for ( int   j   =   i + 1 ;   j   <   n - 1 ;   ++ j )   {              if ( arr [ j ]- arr [ i ]   ==   d )   {                  for ( int   k   =   i + 2 ;   k   <   n ;   ++ k )   {                      if ( arr [ k ]- arr [ j ]   ==   d ) ...

Unique Email Addresses

 https://leetcode.com/problems/unique-email-addresses/ class Solution { public:     int numUniqueEmails(vector<string>& emails) {          set<string> s;         for(auto email:emails){             int i=email.find('@');             string temp=email.substr(0,i);             string last=email.substr(i);             if(temp.find('+')){                 temp=temp.substr(0,temp.find('+'));             }             temp.erase(remove(temp.begin(), temp.end(), '.'), temp.end());  ...

Longest Subarray Length

 https://www.interviewbit.com/old/problems/longest-subarray-length/ int Solution::solve(vector<int> &arr) {   int n = arr.size();   unordered_map<int, int> um;   int sum = 0, maxLen = 0;   // traverse the given array   for (int i = 0; i < n; i++) {     // consider '0' as '-1'     sum += arr[i] == 0 ? -1 : 1;     // when subarray starts form index '0'     if (sum == 1)         maxLen = i + 1;     // make an entry for 'sum' if it is     // not present in 'um'     else if (um.find(sum) == um.end())         um[sum] = i;     // check if 'sum-1' is present in 'um'     // or not     if (um.find(sum - 1) != um.end()) {         // update maxLength         if (max...

Help the Old Man!!!

 https://practice.geeksforgeeks.org/problems/help-the-old-man3848/1# void solve(vector<int> &ans, int N, int n, int &i, int src, int help, int dest){         if(N == 0){             return;         }         solve(ans, N-1, n, i, src, dest, help);         i = i+1;         if(i == n){             ans.push_back(src);             ans.push_back(dest);             return;         }         solve(ans, N-1, n, i, help, src, dest);         return;     }    ...

Remove Linked List Elements

 https://leetcode.com/problems/remove-linked-list-elements/ class Solution { public:     ListNode* removeElements(ListNode* head, int val) {         if(head==NULL ) return head;         while(head!=NULL && head->val==val){             head=head->next;         }        ListNode* prev=NULL;        ListNode* temp=head;         while(temp!=NULL && temp->next!=nullptr){                         if(temp->next->val==val)                 temp->next = temp->next->next;        ...

Combinations

 https://www.interviewbit.com/problems/combinations/   void  comb( int  n,  int  k,  int  st, vector<vector< int > > &v, vector< int > v1) {      if (k ==  0 )     {         v.push_back(v1);          return ;     }      for ( auto  i=st; i<=n; i++)     {         v1.push_back(i);         comb(n, k- 1 , i+ 1 , v, v1);         v1.pop_back();     } } vector<vector< int > > Solution::combine( int  n,  int  k) {     vector<vector< int > > v;    ...

Next Similar Number

 https://www.interviewbit.com/old/problems/next-similar-number/ string Solution::solve(string A) { for(int i=A.size()-2; i>=0; i--) {  if(A[i]<A[i+1])  {   reverse(A.begin()+i+1,A.end());   for(int j=i+1; j<A.size(); j++)   {    if(A[j]>A[i])    {     swap(A[j],A[i]);     break;    }   }  return A;  } } return "-1"; }

Swapping Nodes in a Linked List

 https://leetcode.com/problems/swapping-nodes-in-a-linked-list/ class Solution { public:     ListNode* swapNodes(ListNode* head, int k) {         ListNode* p1=head;         ListNode* p2=head;         ListNode* kth=NULL;         while(--k){             p1=p1->next;         }         kth=p1;         p1=p1->next;         while(p1){             p1=p1->next;             p2=p2->next;         }         swap(kth->val,p2->val);     ...

Count Primes

 https://leetcode.com/problems/count-primes/ brute force: class Solution { public:     bool isPrime(int n) {         for (int i = 2; i * i <= n; i++) {             if (n % i == 0) {                 return false;             }         }         return true;     }     int countPrimes(int n) {        int cnt = 0;         for (int i = 2; i < n; i++) {             if (isPrime(i) == true) {                 cnt++;         ...

Reverse Alternate K Nodes

https://www.interviewbit.com/old/problems/reverse-alternate-k-nodes/ ListNode* Solution::solve(ListNode* A, int B) {     ListNode *curr=A,*prev=NULL,*later=NULL;     int c=0;     while(curr && c<B)     {      later=curr->next;      curr->next=prev;      prev=curr;      curr=later;      c++;     }    if(later)    {      A->next=later;      c=1;      while(later && c<B)      {       later=later->next;        c++;      }      if(later->next)      {       later->next=solve(later->next,B);      }    }  ...

Break a Palindrome

 https://leetcode.com/problems/break-a-palindrome/ class Solution { public:     string breakPalindrome(string palindrome) {         int l=palindrome.size();         if(l==1)    return "";                  for(int i=0;i<l/2;i++){ //Iterating over first half only as other half will be same bcz of PALINDROME             if(palindrome[i]!='a'){                 palindrome[i]='a'; //Replace first non -'a' with 'a'                 return palindrome;             }         }         palindrome[l-1...

Climbing the Leaderboard

 https://www.hackerrank.com/challenges/climbing-the-leaderboard/problem vector < int >   climbingLeaderboard ( vector < int >   scores ,   vector < int >   alice )   {   int   h_rank   =   1 ;      for ( int   i = scores . size ()- 1 ; i > 0 ; i --){          if ( scores [ i ]< scores [ i - 1 ]){              h_rank ++;          }      }      h_rank ++;      vector < int > ranks ( alice . size ());      int   j   =   scores . size ()- 1 ;      for ( int   i = 0 ; i < alice . size (); i ++){          while ( alice [ i ]>= scores [ j ]   ){       ...

List Cycle

 https://www.interviewbit.com/problems/list-cycle/ ListNode* Solution::detectCycle(ListNode* A) {      //Floyd's cycle finding algorithm      if (!A  || !A->next){          return  NULL;     }     ListNode* slow;     ListNode* fast;     slow=fast=A;      while (fast){          if (!fast->next || !fast->next->next){              return  NULL;         }         fast=fast->next->next;         slow=slow->next;          if (fast==slow)  break ;  ...

Equalize the Array

 https://www.hackerrank.com/challenges/equality-in-a-array/problem int   equalizeArray ( vector < int >   a )   { sort ( a . begin (), a . end ());      int   max = a [ 0 ], c = 1 , maxi = 1 ;      for ( int   i = 1 ; i < a . size (); i ++){          if ( a [ i ]== max ){              c ++;              if ( c > maxi ){                  maxi = c ;              }          }          else {              max = a [ i ];          ...

Maximum Length of a Concatenated String with Unique Characters

 https://leetcode.com/problems/maximum-length-of-a-concatenated-string-with-unique-characters/ class Solution { public:     bool checkUnique(string s){         int count[26]={0};         for(int i=0;i<s.size();i++){             if(count[s[i]-'a']==1)                 return false;             else                 count[s[i]-'a']++;         }         return true;     }          void backtrack(vector<string>& arr,string s,int index,int &count){         if(checkUnique(s))  ...

Is Subsequence

 https://leetcode.com/problems/is-subsequence/ class Solution { public:     bool isSubsequence(string s, string t) {        int m=s.size();        int n=t.size();         int i=0,j=0;         while(i<m && j<n){             if(s[i]==t[j]){                 i++;             }             j++;         }         return (i==m) ? 1 : 0;     } };

Subarray with given XOR

 https://www.interviewbit.com/old/problems/subarray-with-given-xor/ int Solution::solve(vector<int> &A, int B) {     int count=0;     int Xor=0;     map<int,int> freq;     for(auto it:A){                  Xor= Xor^it; //prefix Xor                  if(Xor==B){             count++;         }                  if(freq.find(Xor^B)!=freq.end())  // Xor^B == y , y^Xor == B         {             count+=freq[Xor^B];         }              ...

Find Winner on a Tic Tac Toe Game

 https://leetcode.com/problems/find-winner-on-a-tic-tac-toe-game/ class Solution { public:     string tictactoe(vector<vector<int>>& m) {         vector<vector<char>>v(3,vector<char>(3,'0'));         for(int i=0;i<m.size();i++){             if(i%2==0){                 v[m[i][0]][m[i][1]]='A';             }else{                  v[m[i][0]][m[i][1]]='B';             }         }         for(int i=0;i<3;i++){             if(v[...

Power of Two

 https://leetcode.com/problems/power-of-two/submissions/ class Solution { public:     bool isPowerOfTwo(int n) {         if(n<=0) return false;         return  !(n&(n-1));     } };

Count Total Set Bits

 https://www.interviewbit.com/problems/count-total-set-bits/     ans= (2^(x-1) * x)+ (n - 2^x +1 ) + solve(n - 2^x )  x= highest power of 2 (which is less than n)      #define MOD  1000000007     #define ll  long   long   int ll largestpowerof2inrange( int  n) {      int  x= 0 ;      while (( 1  << x) <= n){         x++;     }      return  (x- 1 )%MOD; } int  Solution::solve( int  n) {      if (n== 0 )  return   0 ;     ll x = largestpowerof2inrange(n);     ll bittill2x=x*( 1 <<(x- 1 ));     ll msb= n-( 1 <<x)+ 1 ;     ll rest=n-( 1 <<x); ...

Append and Delete

https://www.hackerrank.com/challenges/append-and-delete/problem string   appendAndDelete ( string   s ,   string   t ,   int   k )   {      int   c = 0 ;      int   tsize = t . size ();      int   ssize = s . size ();      string   ans = "No" ;      if ( tsize + ssize <= k )   ans = "Yes" ;           int   sm =   min ( s . length (), t . length ());   for ( int   i = 0 ; i < sm ; i ++){           if ( s [ i ]== t [ i ]) c ++;           else   break ;      }   if (( k -( tsize + ssize - 2 * c ))>= 0 ){       if (( k -(( ssize - c )   +   ( tsize - c )))% 2 == 0 ) ans = "Yes" ;   }       return ...

Anti Diagonals

 https://www.interviewbit.com/problems/anti-diagonals/ vector<vector< int > > Solution::diagonal(vector<vector< int > > &A) {      int  x=A.size();     vector<vector< int > >res( 2 *x- 1 );      int  count= 0 ;      //upper triangle      for ( int  i= 0 ;i<x;i++){          int  row= 0 ,col=i;          while (row<x && col>= 0 ){             res[count].push_back(A[row][col]);             row++;             col--;         }         c...