Advertisement
imashutosh51

Non-decreasing Array

Oct 6th, 2022
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.91 KB | None | 0 0
  1. /*
  2. There is three case only:
  3. i)2 4 3 : Down 4 to 3 ie. nums[i-1] to nums[i]
  4. ii)2 4 2 : Down 4 to 2 ie. nums[i-1] to nums[i]
  5. ii)2 4 1 : up 1 to 4 ie. nums[i] to nums[i-1]
  6.  
  7. One more point,When i<=1 and nums[i]<nums[i-1] then increase nums[i-1] to nums[i] but
  8. we can't access nums[i-2] so just increase the modification count.
  9. when modification count increases than one,return false.
  10. */
  11.  
  12. class Solution {
  13. public:
  14.     bool checkPossibility(vector<int>& nums) {
  15.         int modification_count=0;
  16.         for(int i=1;i<nums.size();i++){
  17.             if(i>1 && nums[i]<nums[i-1]){
  18.                 modification_count++;
  19.                 if(nums[i-2]<=nums[i]) nums[i-1]=nums[i];
  20.                 else if(nums[i-2]>nums[i]) nums[i]=nums[i-1];
  21.             }
  22.             else if(i<=1 && nums[i]<nums[i-1]) modification_count++;
  23.             if(modification_count>1) return false;
  24.         }
  25.         return true;
  26.     }
  27. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement