본문 바로가기
LeetCode/Array & Hashing

[LeetCode][Kotlin] 665. Non-decreasing Array

by jinwo_o 2024. 10. 18.

665. Non-decreasing Array

Given an array nums with n integers, your task is to check if it could become non-decreasing by modifying at most one element.

 

We define an array is non-decreasing if nums[i] <= nums[i + 1] holds for every i (0-based) such that (0 <= i <= n - 2).

n개의 정수로 구성된 nums 배열이 주어지면, 최대 하나의 요소를 수정하여 감소하지 않는 배열이 될 수 있는지 확인하는 것이 작업입니다. 

nums[i] <= nums[i + 1]이 (0 <= i <= n - 2)와 같이 모든 i(0 기반)에 대해 유지되는 경우 배열이 감소하지 않는다고 정의합니다.

 

Example 1:

Input: nums = [4,2,3]

Output: true

Explanation: You could modify the first 4 to 1 to get a non-decreasing array.

 

Example 2:

Input: nums = [4,2,1]

Output: false

Explanation: You cannot get a non-decreasing array by modifying at most one element.

 

Constraints:

  • n == nums.length
  • 1 <= n <= 10^4
  • -105 <= nums[i] <= 10^5

코드

class Solution {
    fun checkPossibility(nums: IntArray): Boolean {
        var flag = false

        for (i in 0 until nums.lastIndex) {
            if (nums[i] <= nums[i + 1]) continue

            if (flag) return false

            if (i == 0 || nums[i - 1] > nums[i + 1]) {
                nums[i] = nums[i + 1]
            } else {
                nums[i - 1] = nums[i]
            }

            flag = true
        }

        return true
    }
}