码迷,mamicode.com
首页 > 移动开发 > 详细

leetcode_202题——Happy Number(哈希)

时间:2015-05-05 10:16:08      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

Happy Number

 Total Accepted: 7315 Total Submissions: 22724My Submissions

 

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

Credits:
Special thanks to @mithmatt and @ts for adding this problem and creating all test cases.

 

Hide Tags
 Hash Table Math
Have you met this question in a real interview? 
Yes
 
No
 

Discuss

     这道题将每次根据前一个值计算出来的结果储存在set中,再进行查找就可以了

#include<iostream>
//#include<map>
#include<set>
using namespace std;

int n_to_n(int a)
{
	int b=a;
	int last_result=0;

	while(b!=0)
	{
		last_result=(b%10)*(b%10)+last_result;
		b=b/10;
	}
	return last_result;
}

bool isHappy(int n) {
	set<int> temp;
	temp.insert(n);
	int a=n;
	bool c;
	while(1)
	{
		int b=n_to_n(a);
		if(b==1)
		{
			c=1;
			break;
		}
		if(temp.count(b)==1)
		{
			c=0;
			break;
		}
		temp.insert(b);
		cout<<b<<endl;
		a=b;
	}
	return c;
}
int main()
{
	cout<<isHappy(2)<<endl;
}

  

leetcode_202题——Happy Number(哈希)

标签:

原文地址:http://www.cnblogs.com/yanliang12138/p/4478242.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!