Preguntas de pincel básico elemental de Java

Cierre de la escuela =========== 

contenido

1. Números felices

2. Números feos

3. Suma a todos


1. Happy Numbers (la idea de una lista enlazada)

202. Números felices - LeetCode (leetcode-cn.com) icono-predeterminado.png?t=M1L8https://leetcode-cn.com/problems/happy-number/

Temas y requisitos:

Ideas para resolver problemas:

① Dividido en dos casos: a. El resultado es 1 (es decir, el número feliz)

                             b. Es el caso del ciclo alternativo (bucle infinito, piense en una lista circular enlazada)

② Se establecen dos punteros, uno rápido y otro lento, en la lista enlazada circular (lento es un paso a la vez, rápido es dos pasos a la vez)

③ Si lo lento y lo rápido se encuentran, significa que es un ciclo infinito, es decir, un número no feliz

④Si rápido == 1, el rápido llega a 1, lo que significa que el lento también debe llegar a 1, que es el número feliz

 

el código se muestra a continuación:

class Solution {
    public int sqartNum(int n){
int m=0;
while(n>0){
    m+=(n%10)*(n%10);
    n/=10;
}
return m;
    }
    public boolean isHappy(int n) {
int slow=n;
int fast=sqartNum(n);
while(slow!=fast&&fast!=1){
    slow=sqartNum(slow);
    fast=sqartNum(sqartNum(fast));
} return fast==1;
}
}

2. Números feos

263. 丑数 - 力扣(LeetCode) (leetcode-cn.com) icono-predeterminado.png?t=M1L8https://leetcode-cn.com/problems/ugly-number/comments/

Temas y requisitos:

 

Ideas para resolver problemas:

①Convertir un factor primo en n% de un factor primo = 0;

②Usar la recursividad para transformar el problema

el código se muestra a continuación:

class Solution {
    public boolean isUgly(int n) {
        if(n==0)return false;
        if(n==1)return true;
        if(n%2==0){
            return isUgly(n/2);
        }if(n%3==0){
          return   isUgly(n/3);
        }if(n%5==0){
            return isUgly(n/5);
        }return false;
    }
}

3. Suma a todos

258. Agregue a todos - LeetCode (leetcode-cn.com) icono-predeterminado.png?t=M1L8https://leetcode-cn.com/problems/add-digits/submissions/

Temas y requisitos:

Ideas para resolver problemas:

①Para saber cómo encontrar el número en un solo lugar, n%10;

② Saber convertir n dígitos en n-1 dígitos, n/10;

el código se muestra a continuación:

class Solution {
    public int addDigits(int num) {
while(num/10>=1){
    int m=0;
      m+=num/10+num%10;
      num=m;
}return num;
    }
}

Gracias por mirar ~

 

Supongo que te gusta

Origin blog.csdn.net/weixin_58850105/article/details/123113495
Recomendado
Clasificación