Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- There is three case only:
- i)2 4 3 : Down 4 to 3 ie. nums[i-1] to nums[i]
- ii)2 4 2 : Down 4 to 2 ie. nums[i-1] to nums[i]
- ii)2 4 1 : up 1 to 4 ie. nums[i] to nums[i-1]
- One more point,When i<=1 and nums[i]<nums[i-1] then increase nums[i-1] to nums[i] but
- we can't access nums[i-2] so just increase the modification count.
- when modification count increases than one,return false.
- */
- class Solution {
- public:
- bool checkPossibility(vector<int>& nums) {
- int modification_count=0;
- for(int i=1;i<nums.size();i++){
- if(i>1 && nums[i]<nums[i-1]){
- modification_count++;
- if(nums[i-2]<=nums[i]) nums[i-1]=nums[i];
- else if(nums[i-2]>nums[i]) nums[i]=nums[i-1];
- }
- else if(i<=1 && nums[i]<nums[i-1]) modification_count++;
- if(modification_count>1) return false;
- }
- return true;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement