Given an array with n integers, your task is to check if it could become non-decreasing by modifying at most 1 element.
We define an array is non-decreasing if array[i]  holds for every i (1 
Example 1:
Input: [4,2,3]
Output: True
Explanation: You could modify the first 4 to 1 to get a non-decreasing array.
Example 2:
Input: [4,2,1]
Output: False
Explanation: You can't get a non-decreasing array by modify at most one element.
Note:
The n belongs to [1, 10,000].
class Solution:
     def checkPossibility(self, nums):
         """
         :type nums: List[int]
         :rtype: bool
         """
         possibility_flag = False
         for i in range(1, len(nums)):
             if nums[i] < nums[i-1]:
                 if possibility_flag:
                     return False
                 possibility_flag = True
                 if (i-2 < 0 or i-2 >= 0 and nums[i-2] < nums[i]) or (i+1 >= len(nums) or i+1 < len(nums) and nums[i+1] > nums[i-1]):
                     pass
                 else:
                     return False
         return True
 

class Solution:
     def checkPossibility(self, nums):
         """
         :type nums: List[int]
         :rtype: bool
         """
         possibility_flag = False
         for i in range(1, len(nums)):
             if nums[i] < nums[i-1]:
                 if possibility_flag:
                     return False
                 possibility_flag = True
                 if (i-2 < 0 or i-2 >= 0 and nums[i-2] < nums[i]) or (i+1 >= len(nums) or i+1 < len(nums) and nums[i+1] > nums[i-1]):
                     pass
                 else:
                     return False
         return True
 
