No lo he escrito durante varios días, pero he estado trabajando en ello durante un tiempo, y no lo he logrado en un día. He escrito muchos problemas de doble puntero en estos días, y el problema de la programación dinámica se está volviendo cada vez más competente. Encuentre el estado del "segundo" anterior y encuentre la ecuación de transición de estado. Cuando se trataba del problema del doble puntero, realmente descubrí cómo resolver el problema en 2 minutos, pero cuando se realizaba una pregunta, la respuesta siempre era incorrecta, y no sabía por qué. Más tarde descubrí que apenas entendía los cambios en el puntero. Sin embargo, no cayó en el código, y hubo un problema de puntero de puntero poco claro en la implementación del código. A continuación enumeramos las preguntas: (Esta pregunta no es la original)
Esta pregunta se hizo mientras jugaba, y mis ojos no eran fáciles de usar. Comencé a escribir para mantener el orden relativo de los elementos 0. Jajajaja, el tiempo de verificación ha sido incorrecto, estaba cegado por mí mismo, y más tarde descubrí que mi pregunta estaba equivocada. Ahora, el problema del doble puntero, debe pensar claramente sobre cómo mover el puntero 1 y el puntero 2 en un caso, y cómo mover el puntero 2 y el puntero 1 en el segundo caso. Esto es importante!
A continuación enumeramos el código:
public void moveZeroes(int[] nums) {
if(nums.length==0) return;
if(nums.length==1) return;
int i=0;
while (i<nums.length&&nums[i]!=0) i++;
int j=i;
for(int k=i;k<nums.length;k++){
if(nums[k]!=0){
nums[j]=nums[k];
nums[k]=0;
j++;
while(nums[j]!=0){
j++;
}
}
}
return;
}
En este momento, tengo el problema de que cuando se escribe nums [i] en el frente, mientras que el puntero se desborda, && no debe prestar atención a la parte posterior si no se establece el frente, || es no mirar hacia atrás si el frente está establecido Sí, debe tenerse en cuenta que esto afectará el cambio de variables.