网易笔试

1.小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。
魔法机器1:如果投入x个魔法币,魔法机器会将其变为2x+1个魔法币
魔法机器2:如果投入x个魔法币,魔法机器会将其变为2x+2个魔法币
小易采购魔法神器总共需要n个魔法币,所以小易只能通过两台魔法机器产生恰好n个魔法币,小易需要你帮他设计一个投入方案使他最后恰好拥有n个魔法币。

思路:如果n为偶数,则最后一步一定是通过机器2产生;如果n为基数,则最后一步一定是通过机器1产生。倒着往前推回去就可以了,可以使用递归来实现,不过一定要注意递归的终止条件。

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner scan=new Scanner(System.in);
        int n=scan.nextInt();
        StringBuilder sb=new StringBuilder();
       chooseMagic(n,sb);
       System.out.println(sb.reverse().toString());

    }
    static void chooseMagic(int n,StringBuilder sb){        //递归的终止条件
        if(n==1){
            sb.append("1");
            return;
        }
        if(n==2){
            sb.append("2");
            return;
        }
        if(n%2==0){
            sb.append("2");
            chooseMagic((n-2)/2,sb);
        }else{
            sb.append("1");
            chooseMagic((n-1)/2,sb);
        }
    }
}

2.有一个长度为N的正整数数列A = {A[1], A[2], A[3]..., A[N]}。
牛博士给小易出了一个难题:

对数列A进行重新排列,使数列A满足所有的A[i] * A[i + 1](1 ≤ i ≤ N - 1)都是4的倍数。
小易现在需要判断一个数列是否可以重排之后满足牛博士的要求。

思路:偶数和偶数相乘肯定是4的倍数,4或4的倍数可以带走一个基数,所以问题转化成,

只要数组中,4或4的倍数的个数大于基数的个数就行了,是偶数但不是4的倍数的数字,可以放在一堆不用管。

import java.util.*;
public class Main{
    public static void main(String[] agrs){
        Scanner scan=new Scanner(System.in);
        int t=scan.nextInt();
        List<int[]> list=new ArrayList<int[]>();
        for(int i=0;i<t;i++){
            int n=scan.nextInt();
            int[] arr=new int[n];
            for(int k=0;k<n;k++){
                arr[k]=scan.nextInt();
            }
            list.add(arr);
        }
        for(int j=0;j<list.size();j++){
            System.out.println(isSatisfy(list.get(j)));

        }
    }
    static String isSatisfy(int[] arr){
        int c4=0;  //4的倍数
        int c2=0;  //2的倍数,但不是4的倍数
        int c=0;   //基数
        for(int i=0;i<arr.length;i++){
            if(arr[i]%4==0){
                c4++;
            }else if(arr[i]%2==0){
                c2++;
            }else{
                c++;
            }
        }
        if(c4>=c && c2>0){
            return "Yes";
        }else if(c4+1>=c && c2==0){
            return "Yes";
        }else{
            return "No";
        }

    }
}

3.一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,"aaabbaaac"是由下面碎片组成的:‘aaa‘,‘bb‘,‘c‘。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的平均长度是多少。

如样例所示: s = "aaabbaaac"
所有碎片的平均长度 = (3 + 2 + 3 + 1) / 4 = 2.25

思路:只需要求出一共有多少个片段就行了。另外要特别注意,java中,两个整数相除,如何让得到的结果保留两位小数。

int和int相除一定是一个整数,所以需要使用到String.format("%.2f",(double)a/(double)b)

时间: 2024-12-20 18:25:21

网易笔试的相关文章

网易笔试(小敏)

2017/03/25 小敏姐姐网易笔试助攻 这次网易笔试是4选2分析题+1综合题 笔试时间100分钟 以为绰绰有余 结果因为没有经验 第一道题花了60分钟 妹纸三道题题目分别是: 1.共享单车APP竞争的关键因素是什么?其中最重要的是什么? 未来一年,共享单车APP设计方面会有什么样的发展和变化? 2.假如人们不再需要通过吃饭来提供能量,而是通过闲聊转化为能量,会出现哪些新的需求以及哪些旧的需求会消失? 第二问回忆不起来了 3.针对适龄择偶困难人群,你认为这个群体的用户分为哪些用户群? 这些用户

网易笔试之后的自我反省

网易笔试过后,心里空空的.下来也和同学们交流,可能大家以为我比较水,在我谈到写那个大数类的时候,直接否认了我的分段加法思想.虽然被否认,但是我却不能懈怠,更不能因此沮丧或者自我否定.我应该在质疑声中证明自己.我也可以,而且8月份为了拿到offer,我开始拼了! 首先说一下选择题吧,我的知识面有所扩展,但是mysql.linux方面的知识欠缺的比较多.设计模式我之前看过专栏:设计模式.但是没总结.TCP/IP协议我也是看了vamei大神的总结,整体理解还算行,但是实现细节就比较欠缺了. 说说编程题

关于网易笔试...

那天得到了内推码,于是试着投了一下简历,然后得到了笔试的机会,于是乎,今晚就参加了笔试,不得不说,不是计算机专业的,根本就好难,然而我是计算机专业的也什么机会都没有T^T 然后在这里说一下自己的不足,接下来要好好加油了. 1.闭包,考了一道闭包的题目,之前一直觉得自己对于闭包其实很熟悉了,可是题目一出来就懵了,看了还是一知半解. 2.forEach问题,题目好像是这样的: var aa = [{a:1},{}] aa.forEach(function(name,value){ name.b =

每天一道算法编程题(1)——网易笔试&quot;工程师工作安排“问题

首先理解题目意思:每个人只能做工作序号表里的一件工作且两个人不能同时做一件工作.AC思路:采用暴力枚举每种可能的分配方案,子问题的解决逐步向上解决了母问题,最终原问题得解. 标程作者:NotDeep(牛客网)链接:https://www.nowcoder.com/discuss/22696?type=6&order=0&pos=5&page=2 1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 vector&

网易笔试——混合颜料

你就是一个画家!你现在想绘制一幅画,但是你现在没有足够颜色的颜料.为了让问题简单,我们用正整数表示不同颜色的颜料.你知道这幅画需要的n种颜色的颜 料,你现在可以去商店购买一些颜料,但是商店不能保证能供应所有颜色的颜料,所以你需要自己混合一些颜料.混合两种不一样的颜色A和颜色B颜料可以产生 (A XOR B)这种颜色的颜料(新产生的颜料也可以用作继续混合产生新的颜色,XOR表示异或操作).本着勤俭节约的精神,你想购买更少的颜料就满足要求,所以兼职 程序员的你需要编程来计算出最少需要购买几种颜色的颜

网易笔试题目:三列布局,中间自适应宽度,双飞翼布局

<!DOCTYPE html> <html> <head> <title></title> <style type="text/css"> .wrap{ width: 100%; } .one{ float: left; width: 100px; margin-right: -100px; background: yellow; min-height: 100px; } .three{ float: right;

2016网易笔试路灯问题

题目: 一条A点到B点的道路长 l ,现在为该条道路设置 n 个路灯,每个路灯照射的长度固定为 d ,假设这 n 个路灯分别设置在 a1,a2...ai...an ,(路灯可以设置在首尾A点B点处,也可以在同一点设置多个),求使得整条道路保持光明的最小 d. 输入:第一行为道路长度 l 以及路灯总数 n , 第二行为 n 个路灯的位置 a1,a2...ai...an . 输出:d(保留两位小数) 我的解答: import java.text.DecimalFormat;import java.u

剑指Offer——网易笔试之解救小易

知识要点 首先介绍一下曼哈顿,曼哈顿是一个极为繁华的街区,高楼林立,街道纵横,从A地点到达B地点没有直线路径,必须绕道,而且至少要经C地点,走AC和 CB才能到达,由于街道很规则,ACB就像一个直角3角形,AB是斜边,AC和CB是直角边,根据毕达格拉斯(勾股)定理,或者向量理论,都可以知道用AC和CB可以表达AB的长度. 在早期的计算机图形学中,屏幕是由像素构成,是整数,点的坐标也一般是整数,原因是浮点运算很昂贵,很慢而且有误差,如果直接使用AB的距离,则必须要进行浮点运算,如果使用AC和CB,

网易笔试题目-2017-9-25

1 package demi; 2 3 import java.util.Arrays; 4 import java.util.Scanner; 5 6 public class Main { 7 8 public static void main(String[] args) { 9 10 Scanner in = new Scanner(System.in); 11 int t; 12 t = in.nextInt(); 13 int[] x = new int[t]; 14 for (in