网易2018春招笔试题解

第一题:

参考代码
let dir=["N","E","S","W"];
let turn="LRR";
let k=0;
for(let i=0;i<turn.length;i++){
    if(turn[i]=="L"){
        k+=3;
    }else{
        k++;
    }
}
k=k%4;
console.log(dir[k]);


第二题:

题目分析,暴力破解会超时,所以需要点数学,我们来找找规律。
        对于   n=12345,k=2    
        模1   得000(00)    大于k的有0个    
        模2   得1010)       大于k的有0个    
        模3   得12012      大于k的有2个    
        模4   得12301      大于k的有2个    
        模5   得12340      大于k的有3个    
看不出来?加下括号
        模1   得(0)(0)(0)(0)(0)     大于k的有0个    
        模2   得(10)(10)1            大于k的有0个    
        模3   得(120)12              大于k的有2个    
        模4   得(1230)1              大于k的有2个    
        模5   得(12340)              大于k的有3个    
也就是
        模i    为(0...i-1)(0....i-1)(0...n%i)        每个(0...i-1)有i-k个数符合要求,有n/i个(0...i-1),,而最后的那个尾巴只有n%i-k+1个数符合要求
        注意:i要从k+1算起,当i<k时,i-k<0了,会减少总数,i=k时,i-k=0没必要算进去总数
嗯,可以动手写代码了
参考代码:
let n=5,k=2;
let count=0;
if(k==0){
    count=n*n;
}else{
    for(let i=k+1;i<=n;i++){
        count+=~~(n/i)*(i-k);
        if(n%i>=k){
            count+=n%i-k+1;
        }
    }
}
console.log(count);


第三题:

题目分析:
这题用O(n)都有可能会超时,只能看规律了,但是规律也是有其数学性的,而这题的之所以有规律就是相邻的数字相差为1.
当k mod 3=0时,能整除3,当k mod 3=2时也能整除3,因为   k的前一个数(k-1)mod3=1,两个余数想加是3,所以k+(k-1)是可以整除3的
所以这是一道数学题。。。。

参考代码
let l=2,r=5;
let count=0;
for(let k=l;k<=r;k++){
    if(k%3==0||k%3==2){
        count++;
    }
}
console.log(count);
#春招##前端#
全部评论
第一个好像不一样啊。
点赞 回复 分享
发布于 2018-03-27 21:46
第三个循环过不了,会超时,注意到每连续三个一组的就有两个满足要求
点赞 回复 分享
发布于 2018-03-27 21:49
朋友,第一题真的写的好简便巧妙啊,如果是任意字符串怎么接收啊
点赞 回复 分享
发布于 2018-03-27 22:21
给大佬跪了,第三题找规律写了一大堆数数就是没想到mod 3=2的规律
点赞 回复 分享
发布于 2018-03-27 23:26
这个网易是网易游戏的么?。???
点赞 回复 分享
发布于 2018-03-27 23:35
第二题的java版本 import java.util.Scanner; public class Main {     public static void main(String[] args) {         Scanner in = new Scanner(System.in);         int n = in.nextInt();         int k = in.nextInt();         System.out.println(core(n, k));     }     public static int core(int n, int k) {         int count = 0;         if(k == 0){             return n*n;         }         for (int y = k + 1; y <= n; y++) {             int i = n/y;             count += i*(y-k);             if(n%y >=k){                 count += n%y -k +1;             }         }         return count;     } }
点赞 回复 分享
发布于 2018-03-29 12:07

相关推荐

11-15 17:19
湖南大学 Java
成果成果成果果:这是哪个公司的hr,这么离谱吗,我没见过用性别卡技术岗的,身边女性同学拿大厂offer的比比皆是
点赞 评论 收藏
分享
10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务