题解 | #丑数#

丑数

http://www.nowcoder.com/practice/6aa9e04fc3794f68acf8778237ba065b

function GetUglyNumber_Solution(index)
{
    // write code here
    //0-6直接返回index作为结果
    //设置三个指针,分别指向2、3、5队列,取出最小的值压入,这个值不会再压入,所以该队列的指针右移
    //当最小值同时有两个时,同时取出,两个指针都右移
    if(index<7) {return index}
    let p2=0,p3=0,p5=0, newNum = 1;
    let arr = [1]
    //当丑数的数组长度达到了index时终止循环
    while(arr.length<index){
        newNum = Math.min(arr[p2]*2,arr[p3]*3,arr[p5]*5)
        if (newNum==arr[p2]*2){p2++}
        if (newNum==arr[p3]*3){p3++}
        if (newNum==arr[p5]*5){p5++}
        arr.push(newNum)
    }
    return newNum
}
module.exports = {
    GetUglyNumber_Solution : GetUglyNumber_Solution
};
全部评论

相关推荐

铁锈不腻玩家:下面那个袁先生删了,问他怎么回事,头像都换不明白
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务