当前位置: 首页 > article >正文

Leetcode面试经典150题-202.快乐数

题目比较简单,重点是理解思想

解法都在代码里,不懂就留言或者私信

面试的时候可以用我提交的解法,这个更优

class Solution {
    /**第一种-常规解法,主要的思想是如果出现了循环或者等于1,计算过程就停止
    如果等于1,说明是快乐术,否则就是出现了循环 */
    public boolean isHappy2(int n) {
        if(n == 1) {
            return true;
        }
        /**我们用一个HashSet保存曾经出现过的数 */
        Set<Integer> set = new HashSet<>();
        int sum = n;
        while(sum != 1 && !set.contains(sum)) {
            /**注意这一句要放在最前面,因为下面sum马上要改变了,如果不放第一个,有可能初始sum会被忽略 */
            set.add(sum);
            /**记录当前数所有位的平方和 */
            int curSum = 0;
            /**取每一位的平方相加 */
            while(sum != 0) {
                int curNum = sum % 10;
                curSum += curNum * curNum;
                sum = sum / 10;
            }
            /**赋值给sum进行之后的计算 */
            sum = curSum;
        }
        /**如果等于1退出的说明是快乐数,如果不是就是因为重复退出的,不是快乐数 */
        return sum == 1;
    }

    /**第二种-找规律贪心,列举出一堆数后你会发现,只要sum不出现4就不会死循环,出现了1
    就可以结束,我们就可以把循环条件变成sum != 1&& sum !=4
    这个解法就不用set来记录了 */
    public boolean isHappy(int n) {
        if(n == 1) {
            return true;
        }
        /**我们用一个HashSet保存曾经出现过的数 */
        int sum = n;
        while(sum != 1 && sum != 4) {
            /**记录当前数所有位的平方和 */
            int curSum = 0;
            /**取每一位的平方相加 */
            while(sum != 0) {
                int curNum = sum % 10;
                curSum += curNum * curNum;
                sum = sum / 10;
            }
            /**赋值给sum进行之后的计算 */
            sum = curSum;
        }
        /**如果等于1退出的说明是快乐数,如果不是就是因为重复退出的,不是快乐数 */
        return sum == 1;
    }
}


http://www.kler.cn/news/305727.html

相关文章:

  • 人工智能时代,程序员如何保持核心竞争力?
  • CSP-J 计算机网络
  • CSS 圆角渐变边框
  • Linux软件安装
  • 虚幻5|使用F插值到,击打敌人使UI血条缓慢缩减|小知识(3)
  • 利用 Vue.js 自定义指令实现权限控制:问题解析与最佳实践20240912
  • 网络通信安全:全面探索与深入分析
  • python的流程控制语句之制作空气质量评估系统
  • 国产化中间件正在侵蚀开源中间件
  • 使用 Vue.js 将数据对象的值放入另一个数据对象中
  • Redis 集群高可用详解及配置
  • mfc140u.dll文件错误的相关修复方法,4种方法修复mfc140u.dll
  • 计算机毕业设计选题推荐-推拿知识互动平台-Java/Python项目实战
  • 通信工程学习:什么是UNI用户网络接口
  • 漏洞复现-泛微-E-Cology-SQL
  • 基于python+django+vue的视频点播管理系统
  • 半导体制造技术中的沉积和驱入(Deposition and drive-in)过程
  • Vue3 全文知识点
  • Spring Boot 驱动的在线读书笔记平台
  • Vue与React的Diff算法
  • 让人物照片跳舞vigen追影
  • Pytorch+Anaconda+Pycharm+Python
  • 工程师 - HUE(Humans in User Experience)介绍
  • Puppeteer-Cluster:并行处理网页操作的新利器
  • MyBatis中多对一关系的三种处理方法
  • 四、Django模型
  • vite+vue3快速构建项目+router、vuex、scss安装
  • 大家好,我叫Redis~
  • Mac中Twig模版安装与SSTI漏洞学习
  • 探索Go语言中的随机数生成、矩阵运算与数独验证