contenido
-
- 1. LeetCode 228. Intervalo de resumen
- 2. Poder de LeetCode 231.2
- 3. LeetCode 205. Anagramas de letras válidos
-
- tema
- Ideas para resolver problemas de Xiaobian
- Solución de cocina Xiaobian
- análisis de pensamiento
- Gran jefe señalando el país
- ````¿Por qué el 80% de los programadores no pueden ser arquitectos? >>>````
- [Directorio de columnas de Java | Haga clic aquí] (https://blog.csdn.net/guorui_java/article/details/120098618)
- 4. Siga la programación de la cuenta pública Nezha, responda 1024, obtenga mapas mentales y actividades de entrega de libros irregulares
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í
4. Siga la programación de la cuenta pública Nezha, responda 1024, obtenga mapas mentales y actividades de entrega de libros irregulares
- Java desde la entrada hasta el combate del proyecto (versión de video completo)
- Introducción y práctica de la base de datos NoSQL (basada en MongoDB, Redis)
- Desarrollo de proyecto Node+MongoDB+React
- Fácil de aprender Vue.js 3.0 desde la entrada hasta el combate real (caso, video, versión en color)
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 ~~