关于golang:Leetcode专题链表202快乐数

力扣链接:
https://leetcode-cn.com/probl…
解题思路:

  1. 编写一个算法来判断一个数 n 是不是高兴数。「高兴数」 定义为:
    (1)对于一个正整数,每一次将该数替换为它每个地位上的数字的平方和。
    (2)而后反复这个过程直到这个数变为 1,也可能是 有限循环 但始终变不到 1。
    (3)如果这个过程 后果为 1,那么这个数就是高兴数。
    (4)如果 n 是 高兴数 就返回 true ;不是,则返回 false 。
  2. 重点一是求每个地位上的平方和,n%10求最初一位,n/10删除掉最初一位
  3. 第二个重点是对于满足条件的判断,首先是循环,直到sum为1,或者sum中有反复值呈现阐明有循环,这个时候就须要哈希表来记录呈现过的sum值
func isHappy(n int) bool {
    // 应用哈希表来判断
    m := make(map[int]bool)
    for {
        sum := getSum(n)
        if sum == 1 {
            return true
        }
        if _, ok := m[sum]; ok {
            return false
        }
        m[sum] = true
        n = sum
    }
    return false
}

// 重点之一在于如何合成位数求均匀和,n%10求的以后数的最初一位,n/10删除最初一位
func getSum(n int) int {
    sum := 0
    for n != 0 {
        sum += (n%10) * (n%10)
        n = n / 10
    }
    return sum
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理