665. Non-decreasing Array
Дан arreglo nums из n целых чисел. Ваша Tarea - проверить, можно ли сделать его неубывающим, изменив не более одного elementа.
Мы определяем arreglo как неубывающий, если для каждого i (индексация с 0), такого что 0 <= i <= n - 2, выполняется Enunciado nums[i] <= nums[i + 1].
Ejemplo
Input: nums = [4,2,3]
Output: true
Explanation: You could modify the first 4 to 1 to get a non-decreasing array.
C# solución
coincidente/originalpublic class Solution {
public bool CheckPossibility(int[] nums) {
int count = 0;
for (int i = 1; i < nums.Length; i++) {
if (nums[i] < nums[i - 1]) {
if (count > 0) {
return false;
}
count++;
if (i == 1 || nums[i] >= nums[i - 2]) {
nums[i - 1] = nums[i];
} else {
nums[i] = nums[i - 1];
}
}
}
return true;
}
}
C++ solución
borrador automático, revisar antes de enviar#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public bool CheckPossibility(vector<int>& nums) {
int count = 0;
for (int i = 1; i < nums.size(); i++) {
if (nums[i] < nums[i - 1]) {
if (count > 0) {
return false;
}
count++;
if (i == 1 || nums[i] >= nums[i - 2]) {
nums[i - 1] = nums[i];
} else {
nums[i] = nums[i - 1];
}
}
}
return true;
}
}
Java solución
borrador automático, revisar antes de enviarimport java.util.*;
import java.math.*;
// Auto-generated Java draft from the C# solution. Review API differences before LeetCode submit.
public class Solution {
public boolean CheckPossibility(int[] nums) {
int count = 0;
for (int i = 1; i < nums.length; i++) {
if (nums[i] < nums[i - 1]) {
if (count > 0) {
return false;
}
count++;
if (i == 1 || nums[i] >= nums[i - 2]) {
nums[i - 1] = nums[i];
} else {
nums[i] = nums[i - 1];
}
}
}
return true;
}
}
Python solución
coincidente/originalclass Solution:
def checkPossibility(self, nums: List[int]) -> bool:
count = 0
for i in range(1, len(nums)):
if nums[i] < nums[i - 1]:
if count > 0:
return False
count += 1
if i == 1 or nums[i] >= nums[i - 2]:
nums[i - 1] = nums[i]
else:
nums[i] = nums[i - 1]
return True
Go solución
coincidente/originalfunc checkPossibility(nums []int) bool {
count := 0
for i := 1; i < len(nums); i++ {
if nums[i] < nums[i-1] {
if count > 0 {
return false
}
count++
if i == 1 || nums[i] >= nums[i-2] {
nums[i-1] = nums[i]
} else {
nums[i] = nums[i-1]
}
}
}
return true
}
Algorithm
Инициализация переменных:
Завести переменную count для подсчета числа изменений.
Проверить последовательность чисел в arregloе nums.
Проверка условий:
Если nums[i] > nums[i + 1], то увеличиваем count.
Если count превышает 1, возвращаем false, так как больше одного изменения недопустимо.
Если nums[i - 1] > nums[i + 1] и nums[i] > nums[i + 2], то возвращаем false.
Возврат результата:
Если количество изменений не превышает 1, вернуть true.
😎
Vacantes para esta tarea
Se muestran vacantes activas con etiquetas coincidentes.