水仙花数
水仙花数的定义:
一个 N 位非负整数,其各位数字的 N 次方和等于该数本身。
栗子:
153 = 13^3 + 53^3 + 33^3
370 = 3^3 + 7^3 + 0^3
371 = 3^3 + 7^3 + 1^3
1634 = 14^4 + 64^4 + 34^4 + 44^4。
更详细的推荐:维基百科
描述:
给出n
,找到所有的n
位十进制水仙花数。
样例:
比如 n = 1
, 所有水仙花数为:[0,1,2,3,4,5,6,7,8,9]
。
而对于 n = 2
, 则没有 2 位的水仙花数,返回 []
。
题目分析:
弄懂水仙花数!
判断一个数是否为水仙花数:
要找出水仙花数,首先我们需要能识别一个数是否为水仙花数:
1 | // 判断一个数是否为水仙花数 |
找出所有的n
位十进制水仙花数
- 确定查找的范围(找出n位的最大值与最小值)
- 遍历每个数,判断为水仙花数,添加到数组中
1 | const getNarcissisticNumbers = n => { |
注意:
查找位数过大会出现性能问题,以及最大值溢出问题。
反转一个 3 位整数
描述:
反转一个只有 3 位数的整数
样例:
123 反转之后是 321。
900 反转之后是 9。
题目分析:
009
这种形式需要转为9
- 最后输出的数字。
转数组操作:
这是最简单,最容易想到的答案:
- 数字转成字符串再转成数组
- 颠倒数组(翻转了),恢复成字符串
- 输出正常数字,这里用了+号。(用
parseInt
等也是可以的)
1 | const reverseInteger = function(number) { |
取余数,逐个颠倒
1 | const reverseInteger = function (number) { |
通过取余操作,个位转百位,十位转十位,百位转个位。
比如:123=>300+20+1,输出321
拼接字符串:
- 数字转字符串
- 从后往前取对应位置字符,拼接成一个颠倒的字符串
1 | const reverseInteger = function(number) { |