朋友面试头条二轮了,一轮的题目请看这一篇:头条面试题:求用户在线峰值和持续时间

这次的面试题目是:判断一个数是否是happy number(每一位的平方和最终为1)

知道题目首先要理解题目。所谓happy number就是一个整数每个位数上的数字的平方相加,一直循环,如果最终能等于1,则就是happy number。

举例:19

第一次:1²=9²=82

第二次:8²+2²=68

第三次:6²+8²=100

第四次:1

这样的数就是happy number。

怎么解决呢?这样的问题可以一直循环运算,发现等于1就是happy number,不等于就不是。我朋友就采取的是这种方法。但这种方法有个问题,如果不是happy number要什么时候停止循环进行判断呢?因为不知道循环是否是重复的,或还是无限不重复的循环。还有就是这种循环极容易溢出,所以最好的方法还是要找出规律。

以下就是我的线下手动运算,目的是找出规律:

从0~19的运算结果来看可以得出以下结论:

1.0不是happy number;

2.所有happy number最终都能等于1;

3.所有不是happy number的数都是无限重复循环,且都从4开始循环。

得出了以上规律就可以开始写程序代码了。

 计算平方和的方法:

  1. public static int SumSquares(int number)
  2. {
  3. var dic = new ArrayList();
  4. while (true)
  5. {
  6. dic.Add(number % 10);
  7. if (number / 10 == 0)
  8. {
  9. break;
  10. }
  11.  
  12. number = number / 10;
  13. }
  14. var num = 0;
  15. foreach (var item in dic)
  16. {
  17. num += (int)item * (int)item;
  18. }
  19. return num;
  20. }

判断是否是Happy Number:

  1. public static bool IsHappyNumber(int number)
  2. {
  3. while (true)
  4. {
  5. if (number == 4)
  6. break;
  7. if (number == 1)
  8. return true;
  9. number = GetNumber(number);
  10. }
  11. return false;
  12. }

最后在main方法中调用:

  1. static void Main(string[] args)
  2. {
  3. while (true)
  4. {
  5. Console.WriteLine("请输入一个整数(输入exit退出):");
  6. var writeText = Console.ReadLine();
  7. if (writeText == "exit")
  8. break;
  9. var number = Convert.ToInt32(writeText);
  10. bool isHappyNumber = IsHappyNumber(number);
  11. if (isHappyNumber)
  12. Console.WriteLine("输入的是一个Happy Number!");
  13. else
  14. Console.WriteLine("输入的不是一个Happy Number!");
  15. Console.WriteLine();
  16. }
  17. Console.ReadKey();
  18. }

 测试:

成功!!!

项目下载地址:https://gitee.com/jingboweilanGO/happy-number.git

头条面试题:判断一个数是否是happy number(每一位的平方和最终为1)的更多相关文章

  1. 腾讯面试题 腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?

    腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?  这个题目已经有一段时间了,但是腾讯现在还在用来面试.腾讯第一次面 ...

  2. 2018春招-今日头条笔试题-第一题(python)

    题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) 解题思路: 要想得到输入的数字列中存在相隔为k的数,可以将输入的数字加上k,然后判断其在不在输入的数字列中即可. #-*- cod ...

  3. #6 判断一个数是否为2的n次方

    「ALBB面试题」 [题目] 如何判断一个数是否为2的n次方 [题目分析] 看到这种题,相信大家第一反应就是循环除2,这样做肯定是可以得出结果的:但是这种做法无疑大大增加了计算机的运行时间,一个非常大 ...

  4. 2018春招-今日头条笔试题-第四题(python)

    题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) #-*- coding:utf-8 -*- class Magic: ''' a:用于存储数组a b:用于存储数组b num:用于 ...

  5. [算法]判断一个数是不是2的N次方

    如果一个数是2^n,说明这个二进制里面只有一个1.除了1. a  = (10000)b a-1 = (01111)b a&(a-1) = 0. 如果一个数不是2^n, 说明它的二进制里含有多一 ...

  6. 如何判断一个数是否为素数(zt)

    怎么判断一个数是否为素数? 笨蛋的作法: bool IsPrime(unsigned n){    if (n<2)    { //小于2的数即不是合数也不是素数    throw 0;    ...

  7. pyhton 查找一个数的所有因子 以及 判断一个数是否是质数 两个小脚本

    最近看到一个网站, 欧拉计划.挺好玩,都是一些算法题.这是本站:http://projecteuler.net/problems 这个是中文站:http://pe.spiritzhang.com/ 下 ...

  8. 剑指Offer——完美+今日头条笔试题+知识点总结

    剑指Offer--完美+今日头条笔试题+知识点总结 情景回顾 时间:2016.9.28 16:00-18:00 19:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:完美世界笔试 ...

  9. 使用二分查找判断某个数在某个区间中--如何判断某个IP地址所属的地区

    一,问题描述 给定100万个区间对,假设这些区间对是互不重叠的,如何判断某个数属于哪个区间? 首先需要对区间的特性进行分析:区间是不是有序的?有序是指:后一个区间的起始位置要大于前一个区间的终点位置. ...

随机推荐

  1. 【近取 Key】Alpha - v1.0 测试报告

    Bug 前端 主页.登录.注册.导航 bug说明 修复方法 修复结果 导航栏有时不显示用户姓名 修改用户信息的获取逻辑与存储方式 成功 展示词图界面导航栏居右失败 在组件中增加自适应相关设置 成功 用 ...

  2. welcome实现首页路由的重定向效果

    welcome实现首页路由的重定向效果 1.创建welcome组件 2.在路由中引入组件并配置子组件 3.在home.vue中添加路由占位符 4.测试

  3. 【转载】使用rdp协议访问远程Linux桌面

    使用rdp协议访问远程Linux桌面 2017年03月31日 16:23:49 太阳之影 阅读数:2169   一般情况下,如果需要登陆远程Linux系统,我们会使用ssh/telnet来完成,如果需 ...

  4. 记go中一次http超时引发的事故

    记一次http超时引发的事故 前言 分析下具体的代码实现 服务设置超时 客户端设置超时 http.client context http.Transport 问题 总结 参考 记一次http超时引发的 ...

  5. Go语言web开发---Beego基础

    一.框架 框架:可复用的设计组件,它规定了应用的体系结构,明确了整个设计,协作各个组件之间的依赖关系,责任分配,和流程控制.通俗解释框架就是一堆代码的集合,为了提高软件的开发效率和质量,一般都会使用框 ...

  6. 云ERP真的已经玩不转了吗?

    欢迎关注微信公众号:sap_gui (ERP咨询顾问之家) 注:以下云ERP特指Saas ERP,非指ERP系统部署在云端. 不得不说,如今市场对传统ERP的接受度要远比云ERP高得多,95%的中大型 ...

  7. (重磅)Internal: Failed to call ThenRnnForward with model config问题的解决(Keras 2.4.3和Tensorflow2.0系列)

    与此问题斗争了整整十天.win10,keras2.4.3,CUDA 10.1,CUDNN 7.6, tensorflow 2.3.0,驱动程序nvida 452 该问题出现在BiLSTM(GPU加速) ...

  8. 国内外企业竞争AR HUD

    国内外企业竞争AR HUD 华为X红旗合作车型首曝:搭载华为AR HUD.智能座舱方案 2021年4月18日,上海国际车展正式开放,华为也成了此次车展上的重要亮点之一. 据相关报道显示,华为除了联手北 ...

  9. 实时实例分割的Deep Snake:CVPR2020论文点评

    实时实例分割的Deep Snake:CVPR2020论文点评 Deep Snake for Real-Time Instance Segmentation 论文链接:https://arxiv.org ...

  10. 多篇开源CVPR 2020 语义分割论文

    多篇开源CVPR 2020 语义分割论文 前言 1. DynamicRouting:针对语义分割的动态路径选择网络 Learning Dynamic Routing for Semantic Segm ...