前言:
作者:神的孩子在歌唱
大家好,我叫運智

202. 快樂數
難度簡單666收藏分享切換為英文接收動態反饋
撰寫一個演算法來判斷一個數 n 是不是快樂數,
「快樂數」定義為:
- 對于一個正整數,每一次將該數替換為它每個位置上的數字的平方和,
- 然后重復這個程序直到這個數變為 1,也可能是 無限回圈 但始終變不到 1,
- 如果 可以變為 1,那么這個數就是快樂數,
如果 n 是快樂數就回傳 true ;不是,則回傳 false ,
示例 1:
輸入:19
輸出:true
解釋:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
示例 2:
輸入:n = 2
輸出:false
提示:
1 <= n <= 231 - 1
package 哈希表;
import java.util.HashSet;
import java.util.Set;
import javax.lang.model.element.Name;
/*
* 3
* https://leetcode-cn.com/problems/happy-number/
*/
//使用哈希表解決問題,通過題目我們可以判斷,如果進入死回圈就回傳false,如果最后輸出1就回傳True,而且可以判斷出無法達到無窮大
public class _202_快樂數 {
public static boolean isHappy(int n) {
// System.out.println(num);82
// 設定哈希集合,用于存放num
Set<Integer> nums=new HashSet<Integer>();
// 通過while回圈判斷num是否等于1或者num是否存在于哈希表中
while(n!=1&&!nums.contains(n)) {
nums.add(n);
n =count(n);
}
// 回圈結束判斷n是否等于1
return n==1;
}
public static int count(int n) {
int num=0,a=0;
// 我們根據題目將整數一個個分開乘積,最后相加輸出
while(n>0) {
// 取出余數
a=n%10;
// 更新
n=n/10;
num+=a*a;
}
return num;
}
public static void main(String args[]) {
boolean c=isHappy(19);
System.out.print(c);
}
}
本人csdn博客:https://blog.csdn.net/weixin_46654114
轉載說明:跟我說明,務必注明來源,附帶本人博客連接,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/297885.html
標籤:其他
