LeetCode-665. Matriz no decreciente [Matriz no decreciente] -Análisis y código [Java]
1. Tema
Aquí hay una matriz de enteros de longitud n. Por favor, juzgue si la matriz se puede convertir en una secuencia no decreciente cuando se cambia un elemento como máximo.
Definimos una secuencia numérica no decreciente como esta: Para todo i (0 <= i <= n-2) en la matriz, nums [i] <= nums [i + 1] siempre se satisface.
Ejemplo 1:
输入: nums = [4,2,3]
输出: true
解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。
Ejemplo 2:
输入: nums = [4,2,1]
输出: false
解释: 你不能在只改变一个元素的情况下将其变为非递减数列。
Descripción:
- 1 <= n <= 10 ^ 4
- -10 ^ 5 <= nums [i] <= 10 ^ 5
Fuente: LeetCode
Enlace: https://leetcode-cn.com/problems/non-decreasing-array Los
derechos de autor son propiedad de LeetCode . Para reimpresiones comerciales, comuníquese con la autorización oficial. Para reimpresiones no comerciales, indique la fuente.
Dos, análisis y código
1. Modificación directa
(1) Pensando
Debido a que solo se puede cambiar un elemento, se puede diseñar una marca para registrar si se ha utilizado la oportunidad de cambio. Al realizar cambios, haga que los elementos modificados sean lo más pequeños posible.
Cuando nums [i-1]> nums [i], cuando el elemento necesita ser cambiado, se puede dividir en dos casos:
- Si i <2 o nums [i]> = nums [i-2], simplemente cambie nums [i-1] a un número menor o igual a nums [i], porque la sentencia ya alcanzó nums [i] en esta vez, por lo que en realidad no hay necesidad de operar;
- Si i> = 2 y nums [i] <nums [i-2], solo puede cambiar nums [i] por num [i-1] y luego hacer juicios posteriores.
(2) Código
class Solution {
public boolean checkPossibility(int[] nums) {
boolean changed = false;
for (int i = 1; i < nums.length; i++) {
if (nums[i - 1] > nums[i])
if (changed == false) {
if (i > 1 && nums[i] < nums[i - 2])
nums[i] = nums[i - 1];
changed = true;
}
else
return false;
}
return true;
}
}
(3) Resultados
Tiempo de ejecución: 1 ms, superando al 99,54% de los usuarios
en todas las presentaciones de Java ; consumo de memoria: 40,1 MB, superando al 16,91% de los usuarios en todas las presentaciones de Java.
Tres, otro
Nada.