招行信用卡2018春招笔试题解

虽然前面很多选择题不会做,不过编程题还是挺简单的,全AC。
(终于能全AC了,莫名开心)

第一题
比较简单

let line=readline().split(" ");
line=line.map(i=>parseInt(i));
let n=line.shift();
line.sort((a,b)=>a-b);
if(line[0]!=0) console.log("0");
for(let i=0;i<line.length-1;i++){
    if(line[i+1]-line[i]>1){
        console.log(line[i]+1);
    }
}

第二题

要用动态规划
主要注意的点就是条件的判断
如果dp[i+1]已经求出来了,那么dp[i]就是dp[i-1]和dp[i+1]的较小者+1
如果dp[i+1]没有求出来了,那么dp[i]就是dp[i-1]+1
let x=readline();
x=parseInt(x);
if(x<0) x=-x;
let i=1,dp=[];
dp[0]=0;
while(i<=x){
    if(!dp[i]&&dp[i+1])
        dp[i]=Math.min(dp[i-1],dp[i+1])+1;
    else if(!dp[i]&&!dp[i+1]){
        dp[i]=dp[i-1]+1;
    }
    dp[2*i]=dp[i]+1;
    i++;
}
console.log(dp[x]);

第三题

还是要用动态规划,这是剑指offer上的原题,丑数那一题。
庆幸自己前段时间做了这题。
我一开始使用暴力解法,只达到了83%
后来使用了动态规划就AC了
let n=readline();
n=parseInt(n);
function getNum(n){
    if(n<7) return index;
    let res=[];
    res[0]=1;
    let t2=0,t3=0,t5=0;
    for(let i=1;i<n;i++){
        res[i]=Math.min(...[res[t2]*2,res[t3]*3,res[t5]*5]);
        if(res[i]==res[t2]*2) t2++;
        if(res[i]==res[t3]*3) t3++;
        if(res[i]==res[t5]*5) t5++;
    }
    return res[n-1];
}
console.log(getNum(n)); 

#春招#
全部评论
我开发选择题都是牛客网原题😂
点赞 回复 分享
发布于 2018-04-10 21:08
4+2 4+2 4+2
点赞 回复 分享
发布于 2018-04-10 21:09
第三题跪了,一直
点赞 回复 分享
发布于 2018-04-10 21:11

相关推荐

点赞 44 评论
分享
牛客网
牛客企业服务