網(wǎng)站建設推廣有用嗎網(wǎng)推平臺
【力扣】202. 快樂數(shù)
編寫一個算法來判斷一個數(shù) n 是不是快樂數(shù)。
【快樂數(shù)】 定義為:
對于一個正整數(shù),每一次將該數(shù)替換為它每個位置上的數(shù)字的平方和。
然后重復這個過程直到這個數(shù)變?yōu)?1,也可能是 無限循環(huán) 但始終變不到 1。
如果這個過程 結(jié)果為 1,那么這個數(shù)就是快樂數(shù)。
如果 n 是 快樂數(shù) 就返回 true ;不是,則返回 false 。
示例 1:
輸入:n = 19
輸出:true
解釋:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
示例 2:
輸入:n = 2
輸出:false
提示:
1 <= n <= 2 31 2^{31} 231 - 1
題解
思路:題目中說了會可能會無限循環(huán),那么也就是說求和的過程中,sum會重復出現(xiàn) ——> 哈希
使用哈希法,來判斷這個 sum 是否重復出現(xiàn),如果重復了就是 return false, 否則一直找到 sum 為1為止
import java.util.*;class Solution {public boolean isHappy(int n) {Set<Integer> record = new HashSet<>();//n變?yōu)?了或者sum會重復出現(xiàn)了停止while (n != 1 && !record.contains(n)) {//哈希記住sum值record.add(n);int sum = 0;while (n > 0) {int temp = n % 10;sum += temp * temp;n = n / 10;}n = sum;}return n == 1;}
}