문제 링크 : https://leetcode.com/problems/non-decreasing-array/
nums에서 하나만의 숫자를 바꾸어서 감소하지않는 배열 (Non-decreasing Non-decreasing Array)이면 true 아니면 False를 반환하는 문제이다.
예를 들어 [4,2,3]의 경우 4를 1이나 2(앞에있는 2보다 작거나 같은 경우)로 바꿀 수 있다.
[2,2,3,2,4]의 경우
3을 2로 바꿀 수 있고(물론 2를 4로 바꿀수도 있지만 이후 뒤에 숫자들이 있을 경우들을 생각하면 작을수록 더 유리..?하다)
[2,3,3,2,4]의 경우
nums[3]의 2를 앞에있는 3으로 바꾸면(최소 3보다 크거나 '같아야' 하기때문에) non-decreasing 배열이 된다.
[3,4,2,3]
class Solution:
def checkPossibility(self, nums: List[int]) -> bool:
changed = False
for i in range(len(nums)-1):
if nums[i]<=nums[i+1]:
continue
if changed:
return False
if i == 0 or nums[i+1]>=nums[i-1]:
nums[i]=nums[i+1]
else:
nums[i+1] = nums[i]
changed =True
return True
22.12.23복습 완