Solución 1: ordenar la matriz rápidamente y ordenar una matriz de longitud n toma O (nlogn) tiempo.
Solución 2: use HashMap para registrar el número de ocurrencias de cada número, y se puede devolver el primero mayor que 2. La replicación de tiempo es O (n) y se requiere una tabla hash de tamaño O (n) como costo.
Solución 3: De hecho, también es una idea general La condición del título es "En una matriz de longitud n, todos los números están en [0, n-1]". Entonces podemos completar este problema en O (n) tiempo de complejidad sin abrir nuevo espacio de almacenamiento. Es decir, para recorrer desde el principio, el propósito es almacenar el valor correspondiente en cada posición, por ejemplo, a [0] almacena 0, a [3] almacena 3.
Solución 1: Primero seleccione el número en la esquina superior derecha de la matriz. Si el número es igual al número a buscar, la búsqueda finaliza. Si el número es mayor que el número a buscar, se elimina la columna donde se ubica el número; si el número es menor que el número a buscar, se elimina la fila donde se ubica el número.
publicclassSolution{
publicstaticbooleanFind(int target,int[][] array){
for(int i =0; i < array.length; i++){
int low =0;int high = array[i].length -1;while(low <= high){
int mid =(low + high)/2;if(array[i][mid]> target){
high = mid -1;}if(array[i][mid]< target){
low = mid +1;}elsereturntrue;}}returnfalse;}}publicstaticvoidmain(String[] args){
int[][] array ={
{
1,2,8,9},{
2,4,9,12},{
4,7,10,13},{
6,8,11,15}};
System.out.println(Find(7, array));}
3. Reemplazar espacios
Solución 1: escanee la cadena de principio a fin y reemplácela cada vez que encuentre un carácter de espacio. Dado que 1 carácter se reemplaza con 3 caracteres, debemos mover todos los caracteres detrás del espacio en 2 bytes, de lo contrario, se sobrescribirán dos caracteres. La eficiencia del tiempo es O (n ^ 2).
Solución 2: mueva los caracteres en la cadena original. (Muévase de atrás hacia adelante. Primero recorra el número de espacios, establezca la longitud de la cuerda y recorra la cuerda de atrás hacia adelante). La eficiencia del tiempo es O (n).