博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode之Happy Number
阅读量:5898 次
发布时间:2019-06-19

本文共 1281 字,大约阅读时间需要 4 分钟。

Write an algorithm to determine if a number is "happy".

A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.

Example: 19 is a happy number

  • 12 + 92 = 82
  • 82 + 22 = 68
  • 62 + 82 = 100
  • 12 + 02 + 02 = 1

这道题很简单,思路大致如下,首先取这个数的每一位数,其次考虑到终止条件是1或者循环

最开始只判断了最终条件如果是1就结束的情况,忘记了如果无限循环会怎么样,于是没有AC。

从网上查找了一下资料,发现用HashSet 是比较合理的,首先add()方法会将不在集合中的元素加入,其次contain()方法会判断某个数是否在集合内,

因此写了两个函数,一个是得到下一个要判断的数,另一个是判断这个数是不是Happy Number

代码如下:

public class Solution {    public boolean isHappy(int n) {        HashSet
hash = new HashSet
(); while (n != 1) { if (hash.contains(n)) { return false; } hash.add(n); n = s(n); } return true; } public int s(int n){ int num = 0; while(n!=0){ int u = n/10; int v = n%10; n = u; num += v*v; } int result = num; return result; }}

  

转载于:https://www.cnblogs.com/gracyandjohn/p/4562004.html

你可能感兴趣的文章
SQL 三种分页方式
查看>>
查看linux是ubuntu还是centos
查看>>
html video的url更新,自动清缓存
查看>>
IOS Xib使用——为控制器添加Xib文件
查看>>
CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙步骤
查看>>
react 取消 eslint
查看>>
【11】ajax请求后台接口数据与返回值处理js写法
查看>>
Python菜鸟之路:Jquery Ajax的使用
查看>>
LeetCode算法题-Maximum Depth of Binary Tree
查看>>
sha1withRSA算法
查看>>
Vim和操作系统剪贴板交互
查看>>
Cox 教学视频5
查看>>
JVM类加载(4)—加载器
查看>>
public/private/protected的具体区别
查看>>
面试宝典——求一个字符串中连续出现次数最多的子串
查看>>
VMware Workstation虚拟机上网设置
查看>>
Jenkins持续集成学习-搭建jenkins问题汇总
查看>>
C#Note13:如何在C#中调用python
查看>>
Android介绍以及源码编译---Android源码下载
查看>>
SpringBoot集成redis缓存
查看>>