情景题笔试记录

1.携程(9/5)

思路:

class Node{
	int dingdan;
	int ruzhu;
	int lidian;
	
}
class TestJava{
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		ArrayList<Integer> list = new ArrayList<>();
		while(in.hasNext()){
			int count = in.nextInt();
			int time = in.nextInt();
			Node[] node = new Node[count];
			for(int k=0;k<node.length;k++){
				node[k] = new Node();
			}
			for(int k=0;k<count;k++){
				node[k].dingdan = in.nextInt();
				node[k].ruzhu = in.nextInt();
				node[k].lidian = in.nextInt();
				if(time>=node[k].ruzhu&&time<=node[k].lidian)
					list.add(node[k].dingdan);
			}
			if(list.size()==0){
				System.out.println("null");
			}
			Collections.sort(list);
			for(int i:list){
				System.out.println(i);
			}
		}
	}
}

测试用例:

测试用例一:
 10
20180602
1001 20180103 20180105
1002 20180202 20180203
1003 20180304 20180306
1004 20180401 20180408
1005 20180501 20180504
1006 20180601 20180604
1007 20180705 20180706
1008 20180801 20180804
1009 20180903 20180903
1010 20181003 20181003
输出: 
1006
测试用例二:
4
20180103
1013 20180103 20180105
1022 20180102 20180103
1026 20180103 20180103
1007 20180101 20180109
输出
1007
1013
1022
1026
测试用例三:
5
20170103
1013 20180103 20180105
1022 20180102 20180103
1103 20180104 20180106
1034 20180101 20180102
1105 20180201 20180204

输出:
null

??查询的时间复杂度是O(logn)怎么理解

2.Long类型数字中的1的个数(剑指offer上的原题,剑指offer上是整型int,这里是long)

3.

 

2.华为情景题:

第一题:

这题是典型的DFS,代码演示:

class TestJava{
	public static void main(String[] args) {
		int [][] a =  {{1,1,1,1,1,1,1,1,1,1},
			    {1,1,1,0,0,0,0,0,0,0},
	            {1,0,1,0,1,1,1,1,1,0},
			    {0,1,0,0,1,0,0,0,0,0},
			    {0,0,0,0,1,1,1,1,1,1},//有A
			    {0,0,0,0,1,0,1,1,1,1},
			    {0,0,0,0,1,0,1,1,1,1},
			    {0,1,1,1,1,1,1,1,1,1},
			    {0,1,1,1,1,1,1,1,1,1},
			    {0,1,1,1,1,1,1,1,1,1}};
		int x = 3;
		int y = 3;
		int hang = a.length;
		int lie = a[0].length;
		int [][] flag = new int[hang][lie];
		System.out.println(Helper(a,x,y,flag));;
	}
	public static boolean Helper(int[][] a,int i,int j,int[][] flag){
		if(i<0||j<0||i>a.length||j>a[0].length)
			return false;
		if(i==0||j==0||i==a.length||j==a[0].length){
//			System.out.println("i: "+i+"j: "+j);
			return true;
		}	
		if(a[i][j]==0&&flag[i][j]==0){
			flag[i][j] = 1;
			boolean right = Helper(a,i+1,j,flag);
			boolean left = Helper(a,i-1,j,flag);
			boolean up = Helper(a,i,j+1,flag);
			boolean down = Helper(a,i,j-1,flag);
			flag[i][j] = 0;
			return right||left||up||down;
		}
		return false;
	}
}

第二题:

第三题:

京东的题

class Good{
	int x,y,z,index;
	public Good(int x, int y, int z, int index){
		this.x = x;
		this.y = y;
		this.z = z;
		this.index = index;
	}
}

public class TestJava {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		if(n <= 0){
			System.out.println(0);
			return;
		}
		ArrayList<Good> li = new ArrayList<Good>();
		for(int i=0; i<n; i++){
			li.add(new Good(sc.nextInt(), sc.nextInt(), sc.nextInt(), i+1));
		}
		
		int count = 0;
		int flag = 0;
		for(int i=0; i<n; i++){
			Good g1 = li.get(i);
			flag = 0;
			for(int j=0; j<n; j++){
				Good g2 = li.get(j);
				if(g2.x>g1.x && g2.y>g1.y && g2.z>g1.z){
					flag = 1;
					break;
				}
			}
			if(flag == 1){
				count++;
			}
		}
		System.out.println(count);
	}
}

头条的题——孤岛问题

/*
4
1 0 0 0
0 0 0 0
0 0 0 1
0 0 0 0 
*/

//孤岛问题
public class TestJava {  
	private static int[][] array ;

public static void main(String[] args) { 
	Scanner in = new Scanner(System.in);
	int isFirst = 1;
	while(in.hasNext()){
		int count = in.nextInt();
		array = new int[count][count];
		for(int i=0;i<count;i++){
			for(int j=0;j<count;j++){
				array[i][j] = in.nextInt();
			}
		}
//		int count = Integer.valueOf(in.nextLine());
//		for(int i=0;i<count;i++){
//			String str = in.nextLine();
//			String[] a = str.split("\\s");
//			if(isFirst==1){
//				isFirst=0;
//				array = new int[count][a.length];
//			}
//			for(int j=0;j<a.length;j++){
//				array[i][j] = Integer.valueOf(a[j]);
//			}
//		}
		int maxLine = array.length;	//列
		int maxRow = array[0].length;		//行
		int[][] flag = new int[maxRow][maxLine];
		int countNum = 0;
		for(int i=0;i<maxRow;i++){
			for(int j=0;j<maxLine;j++){
				if(array[i][j]==1&&flag[i][j]==0){
					helper(i,j,maxRow,maxLine,flag);
					countNum++;
					
				}
			}
		}
		System.out.println(countNum);
	}
	
}  

public static void helper(int i,int j,int maxRow,int maxLine,int[][] flag){
	//如果没有找到就继续
	if(i<0||j<0||i>=maxRow||j>=maxLine)
		return;
	if(array[i][j]==1&&flag[i][j]==0){
		flag[i][j] = 1;	//已经走过的路径设置为5
		helper(i-1,j,maxRow,maxLine,flag);
		helper(i+1,j,maxRow,maxLine,flag);
		helper(i,j+1,maxRow,maxLine,flag);
		helper(i,j-1,maxRow,maxLine,flag);
		//flag[i][j] = 0;	//这行不需要
	}
	
  }
}

中兴的题——Map的value值排序

import java.util.*;
public class Solution{
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		while(scan.hasNext()) {
			LinkedHashMap<Integer,Integer> map=new LinkedHashMap();
			int num=scan.nextInt();
			for(int i=0;i<num;i++) {
				int salary=scan.nextInt();
				if(map.containsKey(salary)) {
					int value=map.get(salary)+1;
					map.put(salary,value);
				}
				else {
					map.put(salary,1);
				}
			}
			ArrayList<Map.Entry<Integer,Integer>> list = new ArrayList<>(map.entrySet());
			Collections.sort(list,new Comparator<Map.Entry<Integer,Integer>>() {
				public int compare(Map.Entry<Integer,Integer> entry1,Map.Entry<Integer,Integer> entry2) {
						return entry2.getValue()-entry1.getValue();
				}
			});
			System.out.println(list.size());
			for(Map.Entry<Integer,Integer> entry:list) {
				int salary=entry.getValue();
				for(int i=0;i<salary;i++)
					System.out.print(entry.getKey()+" ");
			}
		}
	}
}

情景题:

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;


class myComparator implements Comparator<Integer>{
     @Override
     public int compare(Integer o1, Integer o2) {
            return o2-o1;
 }
public class Main {

	}

/*请完成下面这个函数,实现题目要求的功能
当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^ 
******************************开始写代码******************************/
    static int[] minLengthAvailable(String testcase) {
		String[] str = testcase.split("\\s");
		int n = Integer.valueOf(str[0]);
		int m = Integer.valueOf(str[1]);
		int k = Integer.valueOf(str[2]);
		ArrayList<Integer> list = new ArrayList<>();
		if(n>k){
			for(int i=0;i<n/k;i++){
				list.add(k);
			}
			n = n%k;
		}else{
			list.add(n%k);
		}
		int [] a = null;
		if(list.size()!=n){
			a = new int[list.size()];
			Collections.sort(list,new myComparator());
			for(int i=0;i<list.size();i++){
				a[i] = list.get(i);
			}
		}
		return a;
    }
/******************************结束写代码******************************/


    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int[] res;
            
        String _testcase;
        try {
            _testcase = in.nextLine();
        } catch (Exception e) {
            _testcase = null;
        }
  
        res = minLengthAvailable(_testcase);
        for(int res_i=0; res_i < res.length; res_i++) {
            System.out.println(String.valueOf(res[res_i]));
        }

    }
}

搜狐情景题

任意交换字符串的两个字符后,字符串依然相同,此时返回1,否则返回0

public class TestJava {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		String str1 = scan.next();
		String str2 = scan.next();
		char[] ch1 = str1.toCharArray();
		char[] ch2 = str2.toCharArray();
		if(str1.length()!=str2.length()){
			System.out.println(0);
		}else{
			int count = 0;
			ArrayList<Integer> arr = new ArrayList<Integer>();
			
			int i = 0;
			for(i = 0;i<str1.length();i++){
				if(ch1[i]!=ch2[i]){
					count++;
					arr.add(i);
				}
			}
			if(i==str1.length()&&count==0){
				HashMap<Character,Integer> map = new HashMap<>();
				for(int j=0;j<ch1.length;j++){
					if(map.containsKey(ch1[j])){
						System.out.println(1);
						return;
					}else{
						map.put(ch1[j], 1);
					}
				}
				System.out.println(0);
				return;
			}
				
			
			char s1 = ch1[arr.get(0)];
			char s2 = ch2[arr.get(1)];
			char s3 = ch1[arr.get(1)];
			char s4 = ch2[arr.get(0)];
			
			if(count>2){
				System.out.println(0);
			}else if(s1==s2&&s3==s4){
				System.out.println(1);
			}
		}
	}
}

小米(9/27)

暴力写法

class TestJava{
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);

		
		while(in.hasNext()){
			int n = Integer.valueOf(in.nextLine());		//使用in.nextInt()就不行
//			int n = in.nextInt();
			String[][] temp = new String[n][];
			for(int i=0;i<n;i++){
				String str = in.nextLine();
				String[] a = str.split("\\s");
				temp[i] = new String[a.length];
				
				for(int j=0;j<a.length;j++){
					temp[i][j] = a[j];
				}
			}
			
			ArrayList<String>[] list = new ArrayList[temp.length];
			for(int i=0;i<list.length;i++){
				list[i] = new ArrayList<>();	//这边记得初始化
			}
			
			for(int i=0;i<temp.length;i++){
				for(int j=0;j<temp[i].length;j++){
					list[i].add(temp[i][j]);
				}
			}
			
			int flag = 1;
			for(int i=0;i<list.length;i++){
				flag = 1;
				for(int j=i+1;j<list.length;j++){
					if(jiaoji(list[i],list[j])==true){
						list[i].addAll(list[j]);
						list[j] = null;
					}
				}
			}
			
			int count = 0;		//记录个数
			int max = Integer.MIN_VALUE;		//记录最大的集合
			for(int i=0;i<list.length;i++){
				if(list[i]!=null){
					count++;
					
					HashSet<String> set =  new HashSet<>(list[i]);
					if(set.size()>max)
						max = set.size();
				}
				
			}
			
			System.out.println("还剩下集合数目: "+count);
			System.out.println("剩下的集合的最大个数:"+max);
		}
	}
	public static boolean jiaoji(ArrayList<String> l1,ArrayList<String> l2){
		if(l1== null||l2==null)
			return false;
		for(int i=0;i<l2.size();i++){
			if(l1.contains(l2.get(i)))
				return true;
		}
		return false;
	}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: aibee c 笔试是一道计算机科学的目。在这道中,我们需要编写一个C程序来解决一个问。 首先,我们需要定义目中所给的问。然后,我们按照一定的逻辑步骤编写C代码来解决这个问。最后,我们通过对代码的测试来验证我们的解答是否正确。 在编写代码之前,我们需要先理解目的要求。对于aibee c 笔试,可能是一个与机器学习或数据分析相关的问。我们需要使用C语言编写一个算法来对数据进行处理和分析。 首先,我们需要确定问的输入和输出。根据目要求,我们需要从用户那里获取输入数据,并对其进行分析处理后输出结果。 接下来,我们可以进行算法的设计和代码的编写。在C语言中,我们可以使用函数和循环结构来完成这个任务。我们可以编写一个函数来接收输入数据,并使用循环结构对数据进行处理和分析。然后,我们可以编写另一个函数来输出结果。 在编写代码时,我们需要注意输入数据的合法性和边界情况。我们可以使用条件语句来处理异常情况,并给出相应的提示。 编写完成代码后,我们需要进行测试。我们可以使用不同的测试数据来验证代码的正确性。例如,我们可以使用给定的样例数据来检查输出结果是否与预期相符。如果结果正确,我们可以认为我们的代码是正确的。如果结果不正确,我们需要检查代码中的错误,并对其进行修正。 综上所述,通过理解目、设计算法、编写代码和进行测试,我们可以高效地解答aibee c笔试。在这个过程中,我们可以提高自己的编程能力,并且加深对计算机科学原理的理解。 ### 回答2: aibee c是一个笔试,我将用300个字的篇幅来解答。 aibee c是一个技术人员招聘平台。它提供了一系列的笔试,以帮助企业筛选和选拔合适的人才。 aibee c首先关注的是技术能力。笔试的内容通常包括编程、数据结构和算法等相关知识。这些目旨在评估应聘者在技术领域的熟练程度,以及解决问的能力。 aibee c还注重对应聘者的实际操作能力的评估。除了理论知识外,笔试可能还包括一些实际案例分析、项目经验和技术实践等内容。这些目可以帮助企业了解应聘者的解决问的方法和思路。 通过参加aibee c的笔试,应聘者有机会展示自己的综合能力。不仅仅是技术能力,还包括沟通能力、团队合作和自我管理等方面的能力。这些都是企业在招聘技术人员时所看重的品质。 对于企业来说,aibee c提供了一个简便、高效的方式来筛选和选拔人才。通过笔试的分数和表现,企业可以更加客观地评估应聘者的能力与潜力。 总之,aibee c是一个专注于技术人员招聘的平台,通过提供一系列的笔试,帮助企业筛选和选拔合适的人才。它不仅关注技术能力,还注重实际操作能力和综合能力的评估。对于企业来说,aibee c是一个便捷、高效的招聘工具。 ### 回答3: aibee c的笔试主要包括以下内容: 1. 编程能力测试:会考察编程语言的基本知识和算法能力,例如编写简单的程序,完成数据结构或算法的实现等。 2. 数据分析目:会给出一些数据集或情景,要求借助统计学和数据分析的知识,对数据进行分析和解读,提供相应的结论或建议。 3. 技术思维目:会给出一些技术问,要求发挥自己的技术思维,提出解决方案或对问进行思考和分析。 4. 面试目:会提问一些与个人经验、能力和行为特征相关的问,旨在了解应聘者的能力、沟通能力、团队合作能力等。 在回答这些目时,可以注意以下几点: 1. 仔细阅读目要求和要点,理解清楚目的意思。 2. 在回答编程目时,要注意代码的清晰和逻辑性,保证代码的正确性。 3. 在回答数据分析目时,要注重数据的可视化和解释,结合具体情境给出合理的分析和建议。 4. 在回答技术思维目时,要注重先提出问,再给出解决方案,同时要注重合理性和可行性。 5. 在回答面试目时,要真实、简洁地表达自己的观点和经验,注重沟通和表达能力。 总之,在回答aibee c的笔试时,要准确理解目,保持思维的清晰和合理性,积极思考并给出恰当的解答。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值