Cierre de la escuela ===========
contenido
1. Happy Numbers (la idea de una lista enlazada)
202. Números felices - LeetCode (leetcode-cn.com) https://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) https://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
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 ~