LeetCode例题讲解:快乐数

编写一个算法来判断一个数 n 是不是快乐数。

「快乐数」 定义为:

  • 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
  • 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
  • 如果这个过程 结果为 1,那么这个数就是快乐数。

如果 n 是 快乐数 就返回 true ;不是,则返回 false 。

示例 1:

输入:n = 19
输出:true
解释:

首先需要将给出的数值进行拆分:
 

bool isHappy(int n) {
    int r = 0;
    n = 15646;
    while(n != 0)
    {
        int d= n  % 10;
        n /= 10;  
        //r += d * d;
        printf("%d\n",d);
    }
   // printf("%d\n",r);
    return false;
} 

之后开始按照题目对其计算平方和,将代码封装起来

### 关于哈希表的学习资源与练习题 #### 哈希表的基础概念 哈希表是一种通过键值映射来实现快速查找的据结构[^1]。其核心思想是利用哈希函将键转换为组索引,从而能够以接近常的时间复杂度完成插入、删除和查询操作。 #### 推荐的哈希表练习题 以下是几道经典的哈希表相关题目,适合初学者到中级水平: 1. **两之和 (Two Sum)** 题目描述:给定一个整组 `nums` 和一个目标值 `target`,请你在该组中找出和为目标值的两个整,并返回它们的组下标。此题可以通过使用 map 来优化时间复杂度至 O(n)[^2]。 ```python def two_sum(nums, target): hash_map = {} for i, num in enumerate(nums): complement = target - num if complement in hash_map: return [hash_map[complement], i] hash_map[num] = i return [] ``` 2. **有效的字母异位词 (Valid Anagram)** 判断两个字符串是否互为字母异位词。可以借助哈希表统计字符频率并比较两者是否一致。 3. **快乐 (Happy Number)** 使用集合检测循环链路中的重复值,判断某个字是否会进入无限循环或者最终变为 1。 4. **四相加 II (4Sum II)** 这是一道更复杂的变体问题,涉及四个独立列表 A、B、C 和 D 的组合求解。推荐先掌握 Two Sum 后再尝试本题。 #### 学习资源汇总 对于希望深入理解哈希表的同学来说,可以从以下几个方面入手: - **在线平台**:LeetCode 提供大量针对不同难度级别的算法挑战;HackerRank 上也有专门面向 Python 用户设计的任务集。 - **书籍资料**:《Introduction to Algorithms》第三版详细讲解了各种高级据结构及其应用场景,《Algorithm Design Manual》则提供了丰富的实战案例分析。 - **视频教程**:YouTube 及 Bilibili 平台上不乏优秀的计算机科学教育者分享他们对 Hash Table 的见解以及实际编码演示过程。 #### 总结 通过对上述理论知识的学习加上实践训练,相信你可以更好地理解和运用哈希表这一重要工具解决现实世界中的诸多计算难题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值