查找水仙花数
题目
给出n
,找到所有的n
位十进制水仙花数。
示例
水仙花数:一个 N 位非负整数,其各位数字的 N 次方和等于该数本身。
示例:
153 = 1^3 + 5^3 + 3^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 = 1
, 所有水仙花数为:[0,1,2,3,4,5,6,7,8,9]
。
而对于 n = 2
, 则没有 2 位的水仙花数,返回 []
。
Just Try
请你自动动手试一下:在线编程环境
想想有没有其他思路?
想想时间和空间复杂度,能否优化一下
真的做不到么?
let you think, think makes you happy!
参考答案
function isWaterFlowerNum(num){
let numArr = ("" + num).split("")
return numArr.reduce((a,b) => a + Math.pow(b, numArr.length), 0) == num
}
function main(param) {
console.show(isWaterFlowerNum(param))
}
main(371)
代码复制过来试一下:在线编程环境