Skip to main content

Leetcode 2279 solution


 2279. Maximum Bags With Full Capacity of Rocks


Maximum Bags With Full Capacity of Rocks

You have n bags numbered from 0 to n - 1. You are given two 0-indexed integer arrays capacity and rocks. The ith bag can hold a maximum of capacity[i] rocks and currently contains rocks[i] rocks. You are also given an integer additionalRocks, the number of additional rocks you can place in any of the bags.

Return the maximum number of bags that could have full capacity after placing the additional rocks in some bags.

 

Example 1:

Input: capacity = [2,3,4,5], rocks = [1,2,4,4], additionalRocks = 2
Output: 3
Explanation:
Place 1 rock in bag 0 and 1 rock in bag 1.
The number of rocks in each bag are now [2,3,4,4].
Bags 0, 1, and 2 have full capacity.
There are 3 bags at full capacity, so we return 3.
It can be shown that it is not possible to have more than 3 bags at full capacity.
Note that there may be other ways of placing the rocks that result in an answer of 3.

Example 2:

Input: capacity = [10,2,2], rocks = [2,2,0], additionalRocks = 100
Output: 3
Explanation:
Place 8 rocks in bag 0 and 2 rocks in bag 2.
The number of rocks in each bag are now [10,2,2].
Bags 0, 1, and 2 have full capacity.
There are 3 bags at full capacity, so we return 3.
It can be shown that it is not possible to have more than 3 bags at full capacity.
Note that we did not use all of the additional rocks.

 

Constraints:

  • n == capacity.length == rocks.length
  • 1 <= n <= 5 * 104
  • 1 <= capacity[i] <= 109
  • 0 <= rocks[i] <= capacity[i]
  • 1 <= additionalRocks <= 109


solution :

"Maximum Bags With Full Capacity of Rocks"  is  a problem that uses the concept of hasmap or map.  if we talk about solution of this problem , we will solve it using map<int , int>  type in c++ . 
Here is the step by step explanation : 
  •  find difference between capacity and rocks . later we require it to find how many additional rocks we require to fill the capacity. 
  • we create a map  which is something like this : 
  •  map[0] = 2 , map[1] = 2;   it means  number of bags which require  1 additional rock to come to full capacity is  1. 
  • we chose map here because when we iterate map , it will the pairs in increasing order according to first element of pairs.  

class Solution {
public:
    int maximumBags(vector<int>& capacity, vector<int>& rocks, int additionalRocks) {
       
        int size = capacity.size();
        map<int, int >m;
        for(int i =0; i < size ; i++ )
        {
            int diff = capacity[i] - rocks[i];
            m[diff]++;
        }
        int result = 0;
        for(auto i = m.begin() ; i != m.end() ; i++)
        {  
            int first = (*i).first;
            int second = (*i).second;
            if(additionalRocks < first)
               {
                   break;
               }
            if(first ==  0 )
            {
                result += second;
            }
            else
            {  
                while(second--)
                {
                    if(additionalRocks >= first)
                    {
                        result += 1;
                        additionalRocks -= first;
                    }
                    else
                    {
                        break;
                    }
                }
               
            }


        }
        return result;
    }
};


Any problem ? comment down , i will try to help..

Follow this blog to learn something new .

Comments

Popular posts from this blog

[PDF DOWNLOAD] AKTU Quantum series data structure b.tech 2nd year download

  All AKTU Quantums are available here. Get your hands on AKTU Quantums and boost your grades in AKTU semester exams. You can either search them category wise or can use the search bar or can manually search on this page. Download aktu second year quantum pdf data structures  download  data structures quantum aktu download aktu data structures quantum click here to download  write in comment section if you want quantum of any other subject.

Root to Leaf Paths | binary tree | geeksforgeeks solution

  Root to Leaf Paths Given a Binary Tree of size N, you need to find all the possible paths from root node to all the leaf node's of the binary tree. Example 1: Input: 1 / \ 2 3 Output: 1 2 #1 3 # Explanation: All possible paths: 1->2 1->3 Example 2: Input:   10   / \   20 30   / \   40 60 Output: 10 20 40 #10 20 60 #10 30 # Your Task: Your task is to complete the function  Paths()  that takes the root node as an argument and return all the possible path. (All the path are printed '#' separated by the driver's code.) Note:  The return type cpp:  vector java:  ArrayList> python:  list of list Expected Time Complexity:  O(N). Expected Auxiliary Space:  O(H). Note:  H is the height of the tree. Constraints: 1<=N<=10 3 Note:  The  Input/Ouput  format and  Example  given, are used for the system'...

2485. Find the Pivot Integer | Binary search

  Given a positive integer   n , find the   pivot integer   x   such that: The sum of all elements between  1  and  x  inclusively equals the sum of all elements between  x  and  n  inclusively. Return  the pivot integer  x . If no such integer exists, return  -1 . It is guaranteed that there will be at most one pivot index for the given input.   Example 1: Input: n = 8 Output: 6 Explanation: 6 is the pivot integer since: 1 + 2 + 3 + 4 + 5 + 6 = 6 + 7 + 8 = 21. Example 2: Input: n = 1 Output: 1 Explanation: 1 is the pivot integer since: 1 = 1. Example 3: Input: n = 4 Output: -1 Explanation: It can be proved that no such integer exist.   Constraints: 1 <= n <= 1000 Solution : class Solution { publ ic:     int pivotInteger( int n ) {         int sum = (( n )*( n + 1 ))/ 2 ;         int i = 1 ;         int j =...