关于去哪儿笔试(前端)

第一题AC,第二题超时只有56%,似乎是应该存入之前已经检查过的点的次数,不过在本地没调好。
求第二题AC的答案
第一题:
let M=16000;
function getRealSalary(m) {
    if(m<0||m>1000000) return 0;
    let needTax=m-getWXYJ(m)-getStart();
    let tax=needTax*getTaxRateAndDec(needTax).taxRate-getTaxRateAndDec(needTax).dec;
    return m>getStart()?m-Math.round(tax)-getWXYJ(m):m-getWXYJ(m);
}
function getStart() {
    let start=3500;
    return start;
}
function getWXYJ(num) {
    return Math.round(num*20/100);
}
function getTaxRateAndDec(num){
    let taxRate=0;
    let dec=0;
    if(num<1500){
        taxRate=0.03;
        dec=0;
    }else if(num<4500){
        taxRate=0.1;
        dec=105;
    }
    else if(num<9000){
        taxRate=0.2;
        dec=555;
    }
    else if(num<35000){
        taxRate=0.25;
        dec=1005;
    }
    else if(num<55000){
        taxRate=0.3;
        dec=2755;
    }
    else if(num<80000){
        taxRate=0.35;
        dec=5505;
    }else{
        taxRate=0.45;
        dec=13505;
    }
    return {
        taxRate,
        dec
    };
}
console.log(getRealSalary(M));
第二题:
let lines=[[1,2],[2,1],[2,3],[1,0]];
let checks=[[1,2],[3,0],[1,3],[2.0]];
addLine(lines);
removeSame(lines);
removeSame(checks);
console.log(getThroughTimes(lines,checks));
function addLine(arr) {//根据已经连通的点,判断哪些点连通了,并加进去
    let len=arr.length
    for(let i=0;i<len;i++){
        for(let j=len-1;j>=i+1;j--){
            if(arr[i][1]==arr[j][0]&&arr[i][0]!=arr[j][1]){
                let tmp=[];
                tmp.push(arr[i][0]);
                tmp.push(arr[j][1]);
                arr.push(tmp);
            }
        }
    }
}
function removeSame(arr) {//去重
    for(let i=0;i<arr.length;i++){
        for(let j=arr.length-1;j>=i+1;j--){
            if(arr[i][0]==arr[j][0]&&arr[i][1]==arr[j][1]){
                arr.splice(i,1);
            }
        }
    }
}
function getThroughTimes(lines,checks) {
    let i=checks.length;
    let times=0;
    let timeArr=[];
    while(i--){
        if(!timeArr[i]) {
            let t = 0;
            for (let j = 0; j < lines.length; j++) {
                if (checks[i][0] == lines[j][0] && checks[i][1] == lines[j][1] || checks[i][0] == lines[j][1] && checks[i][1] == lines[j][0]) {
                    t++;
                }
                let tmp = [];
                tmp.push(checks[i][0]);
                tmp.push(checks[i][1]);
                tmp.push(t);
                timeArr.push(tmp);
            }
        }else{
            for (let j = 0; j < timeArr.length; j++) {
                if (checks[i][0] == timeArr[j][0] && checks[i][1] == timeArr[j][1]) {
                    times+=timeArr[j][3];
                }
            }
        }
    }
    return times;
}
function checkValue(value,n) {//检查值
    if(value>=0&&value<=n){
        return true;
    }else return false;
}

#春招#
全部评论
有个老哥做 Q2,一句sout   就过了60%
点赞 回复 分享
发布于 2018-04-02 17:14
第二题背包问题了解一下。
点赞 回复 分享
发布于 2018-04-02 17:32
emmmm我想问,电脑160wifi跳出页面两次被判离开页面是不是凉了。。。
点赞 回复 分享
发布于 2018-04-02 17:36
https://www.nowcoder.com/discuss/71726?type=0&order=0&pos=40&page=1 二楼的大神了解一下,不过我始终不懂为啥我分支限界解背包问题,AC80%
点赞 回复 分享
发布于 2018-04-02 17:47

相关推荐

工作基本定了,比较满意。这深度学习真是难搞啊,论文看不懂,代码看不懂,不会改,创新点???&nbsp;还有一个月中期,怎么搞,已经抑郁了,没有小论文要求,我真是非常幸运了,不然就我这科研能力…………&nbsp;感觉自己对自己失去信心,无时无刻不在否定自己取得一些成绩都是运气好罢了,真的能顺利毕业吗?严重内耗、无力感爆棚啊…………
AI牛可乐:哎呀,听起来你最近压力好大呀,毕业论文和工作的双重压力一定让你感觉像是背了两座山呢。深度学习确实挺复杂的,就像是要在一片迷雾中找到出路一样。但是,你已经很棒了,工作都定好了,这是很大的成就呢! 论文的事情,别太担心。每个人都有看不懂代码和论文的时候,这是正常的。至于创新点嘛,有时候灵感就像小猫一样,需要一点一点地哄出来的。你可以先试试把你看过的资料整理一下,说不定就能找到新的思路呢。 中期答辩前,你可以列个计划,一步一步来,把大问题分解成小问题,一点一点克服。记得,你不是一个人在战斗,你的导师、同学都是你的战友哦。 至于信心嘛,别否定自己,每个人都会有低谷的时候。你已经取得的成绩,都是你实力的体现。毕业不是问题,只要你不放弃,就一定能顺利走过去的。加油哦,我相信你可以的! 对了,如果你愿意的话,可以点击我的头像,我们私信聊,也许我能帮你出出主意,或者就是简单地聊聊天,分散一下你的注意力也好呀。🐮💪🌟
点赞 评论 收藏
分享
三年之期已到我的offer快到碗里来:9硕都比不上9本
点赞 评论 收藏
分享
10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
点赞 6 评论
分享
牛客网
牛客企业服务