网易实习笔试

网易笔试第一题,  矩阵中有一些工厂产生污染, 求离污染最远的地方. 曼哈顿距离
第二题, 求数组中一个子集,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;
    }
        
}





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

相关推荐

拒绝无效加班的小师弟很中意你:求职意向没有,年龄、课程冗余信息可以删掉,需要提升项目经历。排版需要修改。
点赞 评论 收藏
分享
评论
1
6
分享
牛客网
牛客企业服务