Sponsored
Sponsored
This approach makes a single pass through the array while keeping a count of occurrences where nums[i] > nums[i+1]. If more than one such occurrence is found, it returns false. During the traversal, if such an occurrence is found, we will attempt to resolve it by modifying nums[i] or nums[i+1] optimally based on their neighbors.
Time Complexity: O(n), where n is the length of the array.
Space Complexity: O(1), since no additional space is used dependent on input size.
1def checkPossibility(nums):
2 count = 0
3 for i in range(len(nums) - 1):
4 if nums[i] > nums[i + 1]:
5 count += 1
6 if count > 1:
7 return False
8 if i > 0 and nums[i + 1] < nums[i - 1]:
9 nums[i + 1] = nums[i]
10 return True
The Python solution runs a loop, counting ordinance failures in the array. On the first failure, it optimizes by evaluating the relationship of adjacent elements and making minimal necessary changes.
This approach involves using two pointers to traverse from the start and end of the array. We simulate potential changes to resolve any issues at both ends, using the pointers to converge inwards and analyze changes required to achieve a non-decreasing state.
Time Complexity: O(n)
Space Complexity: O(1)
1def
In Python, the two-pointer approach is efficiently implemented to traverse the list and adjust elements. The left and right pointers work in tandem to minimize the number of changes required to keep order.