Problema
Un arreglo de números enteros de tamaño n tiene que recorrer la posición de los numeros K veces.
Solución:
class Solution {
public void rotate(int[] nums, int k) {
int n = nums.length;
k = k % n;// Reducir k si es mayor que n
reverse(nums, 0, n - 1);
reverse(nums, 0, k - 1);
reverse(nums, k, n - 1);
}
private void reverse(int[] nums, int start, int end) {
while (start < end) {
int temp = nums[start];
nums[start] = nums[end];
nums[end] = temp;
start++;
end--;
}
}
}
Explicación
Esta solución utiliza la técnica de inversión en tres partes. Es eficiente porque trabaja directamente sobre el arreglo original sin necesidad de crear uno nuevo.
Complejidad
- Tiempo: O(n)
- Espacio: O(1)
Artículo con fines educativos y de práctica personal.
No hay comentarios.:
Publicar un comentario