【Lintcode】 488. Feliz número

Dirección del título:

https://www.lintcode.com/problem/happy-number/description

Dado un entero positivo norte norte , encuentre la suma de los cuadrados de sus dígitos para obtener un nuevo número, y luego continúe haciendo la misma operación en este nuevo número. Si finalmente tengo 1 1 devuelve verdadero, de lo contrario devuelve falso.

Método 1: utilice una tabla hash para registrar el número calculado y devuelva falso si hay duplicados. Si llegas a la mitad 1 1 devuelve verdadero. El código es el siguiente:

import java.util.HashSet;
import java.util.Set;

public class Solution {
    /**
     * @param n: An integer
     * @return: true if this is a happy number or false
     */
    public boolean isHappy(int n) {
        // write your code here
        Set<Integer> set = new HashSet<>();
        set.add(n);
        int i = 0;
        while ((i = sum(n)) != 1) {
            if (!set.add(i)) {
                return false;
            }
            n = i;
        }
        
        return true;
    }
    
    private int sum(int n) {
        int res = 0;
        while (n > 0) {
            int i = n % 10;
            res += i * i;
            n /= 10;
        }
        
        return res;
    }
}

Método 2: utilice la lista vinculada para encontrar el anillo, el puntero rápido y lento.

public class Solution {
    public boolean isHappy(int n) {
        // write your code here
        int slow = n, fast = n;
        do {
            slow = sum(slow);
            fast = sum(sum(fast));
            if (fast == 1) {
                return true;
            }
        } while (slow != fast);
        
        return false;
    }
    
    private int sum(int n) {
        int res = 0;
        while (n > 0) {
            int i = n % 10;
            res += i * i;
            n /= 10;
        }
        
        return res;
    }
}
Publicado 388 artículos originales · me gustaron 0 · 10,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/qq_46105170/article/details/105355684
Recomendado
Clasificación