Advertisement
maycod23

Minimum Operations to Reduce X to Zero.cpp

Jun 20th, 2022
838
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.82 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     int maxsubarraylength(vector<int>& a,int k)
  4.     {
  5.         //return the max subarray length whose sum is k
  6.         if(k<0) return -1;
  7.         int l = 0, temp = 0, i = 0, len = 0;
  8.         while (i <a.size())
  9.         {
  10.             temp += a[i];
  11.             if (temp < k) {
  12.                 i++; continue;
  13.             }
  14.             else if (temp == k) {
  15.                 len = max(len, (i - l + 1));
  16.                 i++; continue;
  17.             }
  18.             else {
  19.                 //temp>k
  20.                 temp-=a[l]; l++;
  21.                 temp-=a[i];
  22.                 continue;
  23.             }
  24.         }
  25.         if(len==0) return -1;
  26.         return len;
  27.     }
  28.     int minOperations(vector<int>& nums, int x) {
  29.         int sum=0;
  30.         for(auto i:nums) sum+=i;
  31.         if(sum==x) return (nums.size());
  32.         int tempans=maxsubarraylength(nums,sum-x);
  33.         if(tempans==-1) return -1;
  34.         return (nums.size()-tempans);
  35.     }
  36. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement