Algoritmo LeetCode, una pregunta al día, impacto Alibaba, día 6

1. LeetCode 228. Intervalo de resumen

tema

Dada una matriz ordenada de números enteros sin elementos repetidos.
Devuelve una lista de los rangos de intervalos ordenados más pequeños que cubren exactamente todos los números de la matriz. Es decir, cada elemento de nums está exactamente cubierto por algún rango de intervalo, y no hay ningún número x que pertenezca a algún rango pero no a nums.
Entrada: números = [0,1,2,4,5,7]
Salida: ["0->2","4->5","7"]

Solución de cocina Xiaobian

public static List<String> summaryRanges(int[] nums) {
    
    
    int step = -1;
    int next = 0;
    int over = 0;
    int curren = 0;
    List<String> list = new ArrayList<>();
    for(int i = 0;i<nums.length;i++){
    
    
        int c = nums[i];
        if (i<=curren + step){
    
    
            continue;
        }
        curren = i;
        String temp = "";
        step = 0;
        if(i+1+step == nums.length){
    
    
            list.add(String.valueOf(c));
            break;
        }
        next = nums[i+1+step];
        while (next - c == 1+step){
    
    
            over = next;
            step++;
            if(i+1+step < nums.length){
    
    
                next = nums[i+1+step];
            }
        }
        if (step == 0){
    
    
            temp = String.valueOf(c);
        }else{
    
    
            temp += c + "->"+over;
        }
        list.add(temp);
    }
    return list;
}

Basta de problemas, platos.

Gran jefe señalando el país

public static List<String> summaryRanges2(int[] nums) {
    
    
    List<String> ret = new ArrayList<String>();
    int i = 0;
    int n = nums.length;
    while (i < n) {
    
    
        int low = i;
        i++;
        while (i < n && nums[i] == nums[i - 1] + 1) {
    
    
            i++;
        }
        int high = i - 1;
        StringBuffer temp = new StringBuffer(Integer.toString(nums[low]));
        if (low < high) {
    
    
            temp.append("->");
            temp.append(Integer.toString(nums[high]));
        }
        ret.add(temp.toString());
    }
    return ret;
}

2. Poder de LeetCode 231.2

tema

Dado un entero n, juzgue si el entero es una potencia de 2. Si es así, devuelve verdadero; de lo contrario, devuelve falso.
Si existe un entero x tal que n == 2x, n se considera una potencia de 2.

Solución de cocina Xiaobian

public static boolean isPowerOfTwo(int n) {
    
    
    if (n == 1){
    
    
        return true;
    }
    while (true){
    
    
        if (n/2 >1 && n%2==0){
    
    
            n = n/2;
        }else{
    
    
            if (n == 2){
    
    
                return true;
            }else{
    
    
                return false;
            }
        }
    }
}

análisis de pensamiento

Un número nn es una potencia de 22 si y solo si nn es un entero positivo y la representación binaria de nn contiene solo 11 11.
Por lo tanto, podemos considerar usar la operación de bits para extraer el 11 más bajo en la representación binaria de nn y luego juzgar si el valor restante es 00. n & (n - 1)
donde \texttt{&}& significa operación AND bit a bit. Este truco de operación de bits puede eliminar directamente el bit 11 más bajo de la representación binaria de nn.

Gran jefe señalando el país

public boolean isPowerOfTwo(int n) {
    
    
    return n > 0 && (n & (n - 1)) == 0;
}

Binario no es muy bueno para jugar, ah vergüenza.

3. LeetCode 205. Anagramas de letras válidos

tema

Dadas dos cadenas s y t, escribe una función para determinar si t es un anagrama de s.
Nota: si cada carácter en s y t aparece la misma cantidad de veces, entonces s y t se llaman anagramas entre sí.

Ideas para resolver problemas de Xiaobian

Saque el número de todas las letras y colóquelas en el mapa.Si las dos cadenas son anagramas, los mapas deben ser iguales.

Solución de cocina Xiaobian

public static boolean isAnagram(String s, String t) {
    
    
    Map<Character,Integer> map = new HashMap<>();
    for (int i = 0; i < s.length(); i++) {
    
    
        char c = s.charAt(i);
        if(map.containsKey(c)){
    
    
            map.put(c,map.get(c)+1);
        }else{
    
    
            map.put(c,1);
        }
    }
 
    Map<Character,Integer> map2 = new HashMap<>();
    for (int i = 0; i < t.length(); i++) {
    
    
        char c = t.charAt(i);
        if(map2.containsKey(c)){
    
    
            map2.put(c,map2.get(c)+1);
        }else{
    
    
            map2.put(c,1);
        }
    }
    return map.equals(map2);
}

análisis de pensamiento

t es un anagrama de ss equivalente a "dos cadenas ordenadas iguales". Por lo tanto, podemos ordenar las cadenas ss y tt respectivamente y juzgar si las cadenas ordenadas son iguales. Además, si ss y tt tienen longitudes diferentes, tt no debe ser un anagrama de ss.

Gran jefe señalando el país

public static boolean isAnagram(String s, String t) {
    
    
    char[] c1 = s.toCharArray();
    char[] c2 = t.toCharArray();
    Arrays.sort(c1);
    Arrays.sort(c2);
    return Arrays.equals(c1,c2);
}

为什么80%的码农做不了架构师?>>>

Directorio de columnas de Java | Haga clic aquí

inserte la descripción de la imagen aquí

4. Siga la programación de la cuenta pública Nezha, responda 1024, obtenga mapas mentales y actividades de entrega de libros irregulares

  1. Java desde la entrada hasta el combate del proyecto (versión de video completo)
  2. Introducción y práctica de la base de datos NoSQL (basada en MongoDB, Redis)
  3. Desarrollo de proyecto Node+MongoDB+React
  4. Fácil de aprender Vue.js 3.0 desde la entrada hasta el combate real (caso, video, versión en color)
    inserte la descripción de la imagen aquí

Preste atención al número público: programación Nezha

La programación de Nezha actualiza artículos de alta calidad todas las semanas. Después de prestar atención, responda a [CSDN] para recibir mapas mentales de Java, materiales de aprendizaje de Java y materiales de entrevistas masivas.

 

Agrégame WeChat: 18525351592

Ingrese al grupo de intercambio técnico, hay muchos peces gordos técnicos en el grupo, intercambien tecnología juntos, avancen juntos, ingresen juntos a la gran fábrica y también compren libros técnicos gratis ~~

Supongo que te gusta

Origin blog.csdn.net/guorui_java/article/details/124186857
Recomendado
Clasificación