网易实习笔试

网易笔试第一题,  矩阵中有一些工厂产生污染, 求离污染最远的地方. 曼哈顿距离
第二题, 求数组中一个子集,sum最大同时被6整除.
第三题, 给 T,   给不定长的输入,(这里我为了排序用pripority  ) 求最接近T的
   public static void main(String[] args) {
    	Scanner in = new Scanner(System.in);
    	int T = Integer.parseInt(in.nextLine());
    	int y = Integer.parseInt(in.nextLine());
    	System.out.println(T +y);
    	String [] ss = new String[10010];
    	String s = in.nextLine();
    	ss =  s.split(" ");
    	System.out.println(ss[0]);
    	Vector<Integer> vt = new Vector<Integer>() ;//怎么是一个有序数组???
    	PriorityQueue<Integer> pq = new PriorityQueue<Integer>();
    	for(int i = 0 ; i < ss.length; i ++) {
    		pq.add(Integer.parseInt(ss[i]));
    	}
    	System.out.print(pq.peek());
    	//怎么遍历啊!!!遍历一个有序数组
    	while(!pq.isEmpty()) {    		//find closest num
    		vt.add(pq.poll());// 获得一个有序数组
    	}
    	int i = 0 ;
    	for(;i< vt.size() && vt.indexOf(i) < T;i++){    	}
    	//找到最接近的大一点点.
    	int closest;
    	if(i == vt.size()) {
  		  closest  = Integer.MAX_VALUE;// all smaller than T,那就照常处理
    	}	
    	else {
    		closest = vt.elementAt(i);
		}
    	if(closest == T) {
    		System.out.print(T-y);
    		return;
    	}
    	boolean flag = false;
    	for(int j = i-1; j> 0 ; j -- ) {
    		// j一定小于T
    		int temp = vt.elementAt(j);//之前也写indexof了 
    		for(int k = j ;k > 0 ; k --) {
    			temp  += vt.elementAt(k)  ;//从最大开始加
    			if(temp >=T) {
    				if(temp  < closest ) {
    					closest = temp;
    				}//更新closest
    				temp -= vt.elementAt(k);
    			}
    		}
    	}
    	System.out.print(T-y);
    	in.close();
}
不定长怎么办?
但是因为sc.nextInt()方法只读取空白符前面的值,会把空白符继续留在缓存区,而sc.nextLine()会把空白符也读取并清除,所以每次用完sc.nextInt()方法最好在后面加个sc.nextLine(),但最好舍弃这个方法,每行都采用sc.nextLine()方法读取。【在这里两个方法混用,提交代码的时候很容易经常出现数组越界的问题】
    while(cin>>a){
        sum=0;
        sum+=a;
        while(cin.get()!='\n'){
            cin>>a;
            sum+=a;        
        }
        cout<<sum<<endl;
    }
  while(scanner.hasNext()){
            String s = scanner.nextLine();
            String[] array = s.split(" ");
            int sum = 0;
            for(int i = 0; i < array.length; i++){
                sum += Integer.parseInt(array[i]);
            }
            System.out.println(sum);
        }
或者python
#不确定输入有多少行,用while循环
import sys
seq = [ ]
while True:
    line = sys.stdin.readline().strip()     #line此时是字符串列表,并已去掉前后空格 回车符
    if line:
        line = map(int,line.split()) #把line的空格元素去掉,转成字符串列表list,并转成整型int
    else:
        break
    seq += line
print(seq)



笔试第四题
给[a, b] 求范围中是回文数同时又 是回文数的三次方的数.
public class Main {

    public static void main(String[] args) {
    	Scanner in = new Scanner(System.in);
    	String start  = in.nextLine();
    	String end = in.nextLine();
    	//Set<Integer> huiwen  = new HashSet<Integer>();
    	int s = Integer.parseInt(start);
    	int e =  Integer.parseInt(end);// 三次方想不到啊 !!
    	//找到所有三次方可能在范围中的数.
    	if(huiwen("9"))
    //		System.out.println("111");
    	System.out.print("[");
    	int count = -1 ;
    	for(int i = 1 ; i <= Math.sqrt(e) ;i++ ) {
    		if(huiwen(String.valueOf(i) ) ) {
    			//huiwen.add(i);
    			int j = i*i*i;
    			if( j<= e && j >= s && huiwen(String.valueOf(j))) { 
    				count++;
    				if(count == 0)
    					System.out.print(j);// 到底怎么输出啊!!
    				else 
    					System.out.print(","+j);
    			}
    		}
    	}
    	System.out.print("]");
    	in.close();
    	//        Scanner in = new Scanner(System.in);
//        Vector<Integer> id  = new Vector<Integer>();//不能用int
//        Vector<String> old  = new Vector<String>();//不能用int
//        String line1  = in.nextLine();
//        for(int i = 0 ; i < line1.length(); ) {
//        	String c = line1.substring(i,i+1);
//        	id.add( Integer.parseInt(c));
        }
    	private static boolean huiwen(String str){
        if(str.isEmpty()) return false;
        int slow = 0,fast = str.length();
        //if first = last
        while(slow <= fast){
           // System.out.println(str.indexOf(slow)); 
            if(str.indexOf(slow) == str.indexOf(fast)){
                slow++;//应该是charAt 我写错了写indexOF了, 好多都写成indexof了
                fast --;
            }
            else{
                return false;
            }
        }
        return true;
    }
        
}





#笔试题目##网易#
全部评论
第二题01背包
点赞 回复 分享
发布于 2021-04-03 11:51
我不明白为啥第四题只能过20%  我今天刷了刷回溯,应该对第二题有帮助
点赞 回复 分享
发布于 2021-03-28 20:22
string就是charat 有的是elementat
点赞 回复 分享
发布于 2021-03-28 00:58
用arraylist就可以了
点赞 回复 分享
发布于 2021-03-28 00:55

相关推荐

06-27 12:54
已编辑
门头沟学院 Java
累了,讲讲我的大学经历吧,目前在家待业。我是一个二本院校软件工程专业。最开始选专业是觉得计算机感兴趣,所以选择了他。本人学习计算机是从大二暑假结束开始的,也就是大三开始。当时每天学习,我个人认为Java以及是我生活的一部分了,就这样持续学习了一年半,来到了大四上学期末,大概是在12月中旬,我终于找的到了一家上海中厂的实习,但我发现实习生的工作很枯燥,公司分配的活也不多,大多时间也是自己在自学。就这样我秋招末才找到实习。时间来到了3月中旬,公司说我可以转正,但是转正工资只有7000,不过很稳定,不加班,双休,因为要回学校参加答辩了,同时当时也是心高气傲,认为可以找到更好的,所以放弃了转正机会,回学校准备论文。准备论文期间就也没有投递简历。然后时间来到了5月中旬,这时春招基本也结束了,然后我开始投递简历,期间只是约到了几家下场面试。工资也只有6-7k,到现在我不知道该怎么办了。已经没有当初学习的心劲了,好累呀,但是又不知道该干什么去。在家就是打游戏,boss简历投一投。每天日重一次。26秋招都说是针对26届的人,25怎么办。我好绝望。要不要参加考公、考研、央国企这些的。有没有大佬可以帮帮我。为什么感觉别人找工作都是顺其自然的事情,我感觉自己每一步都在艰难追赶。八股文背了又忘背了又忘,我每次都花很长时间去理解他,可是现在感觉八股、项目都忘完了。真的已经没有力气再去学习了。图片是我的简历,有没有大哥可以指正一下,或者说我应该走哪条路,有点不想在找工作了。
码客明:太累了就休息一下兄弟,人生不会完蛋的
如果实习可以转正,你会不...
点赞 评论 收藏
分享
评论
1
6
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务