Thursday, 21 November 2024

Search Insert Position

 class Solution {

public:
    int searchInsert(vector<int>& nums, int target) {
        int high = nums.size();
        int low = 0;
        int mid = (low+high)/2;
        int prev_mid = mid;
        if(target < nums[low])
         return low;
        else if(target > nums[high-1])
         return high;
        while(low < high)
        {
            if(target == nums[mid] )
            {
                 return mid;
            }
            else if(target > nums[mid])
            {
                  low = mid;
                  mid= (low + high)/2;
            }
            else
            {
                high = mid;
                mid =  (low+high)/2;
            }
            if(prev_mid == mid)
            {
                break;
            }
            else {
                prev_mid = mid;
            }

        }

        return mid+1;
       
    }
};

Maximum Swaps

 class Solution {

public:
   
    int maximumSwap(int num) {
       std::string origin_n = std::to_string(num);
       std::vector<char> c;
       std::vector<char> max;
       std::vector<int> vec;
       int ret =0;
       for(int i=0 ; i< origin_n.length(); i++)
       {
          c.push_back(origin_n.at(i));
          max.push_back(origin_n.at(i));
       }
       std::sort(max.begin(), max.end(), std::greater<>());

       if(std::equal(c.begin(), c.end(), max.begin()))
       {
           string str(max.begin(), max.end());
           ret = std::stoi(str);
           return ret;
       }
       for(int i=0; i< c.size(); i++)
       {
          for(int j=i+1; j< c.size(); j++ )
          {
             char temp = c[i];
             c[i] = c[j];
             c[j] = temp;
             string str(c.begin(), c.end());
             vec.push_back(std::stoi(str));
             temp = c[i];
             c[i] = c[j];
             c[j] = temp;
          }
 
       }

       int m = *max_element(vec.begin(), vec.end());
       return m;
    }
};

Find Kth closest element

 #include <cmath>

#include <algorithm>
#include <iterator>
class Solution {

public:
    vector<int> findClosestElements(vector<int>& arr, int k, int x) {
       multimap<int,int> v;
       vector<int> ret;
       for(int i=0; i< arr.size(); i++)
       {
           v.insert({abs(arr[i]-x), i});        
       }
       int count = 0;
       for(auto &[key,val]: v)
       {
           if(count >= k)
               break;
 
            ret.push_back(arr[val]);

           count++;
       }
       std::sort(ret.begin(), ret.end());
       return ret;
    }
};