1.题目描述

携程为了帮助旅客解决在途中的各种问题,为了尽可能提升服务质量,公司希望客服人数可以满足所有旅客的来电,不用排队等待人工客服。现在提供客服中心所有的通话记录时间,你能算出最少需要多少名客服吗?

输入

输入一个n表示要输入的通话记录个数,接下来输入n行,每行为逗号相隔的两个整数,两个数字分别代表呼入时间和挂断时间的时间戳。举例:10,30,表示(10,30),代表第10秒呼入,第30秒挂断。即第30秒可以接入新的来电;每一行都是一条通话记录,通话记录已经按照呼入时间从小到大排序;

输出

输出一个整数

代表最少需要多少客服,可以满足所有旅客来电不用等待。

6

0 , 30

0 , 50

10 , 20

15 , 30

20 , 50

20 , 65

样例输出

5

思路

<mark>就是定义一个数组记录客服最后服务的时间,遍历每一个通话记录,在编辑当前通话记录时,判断当前客服数组里的客服是否有闲着的,闲着的标准就是最后服务时间小于等于该通话记录的开始时间,如果有,就把该客服最后服务时间改为当前通话记录,也就是让这个客服服务,如果没有,则创建一个新客服,新客服为当前通话记录服务,最后服务时间记录为当前通话记录的结束时间</mark>

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
   
    public static void main(String[] args) {
   
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        int[][] t= new int[n][2];

        ArrayList<Integer> al=new ArrayList<Integer>();
        for(int i=0;i<n;i++) {
   
            String[] s=sc.next().split(",");
            t[i][0]=Integer.valueOf(s[0]);
            t[i][1]=Integer.valueOf(s[1]);
        }
        for(int i=0;i<n;i++) {
   
            int start=t[i][0];
            int end=t[i][1];
            if(al.isEmpty()) {
   
                al.add(end);
            }else {
   
                int j=0;
                for(;j<al.size();j++) {
   
                    if(start>=al.get(j)) {
   
                        al.set(j, end);
                        break;
                    }
                }
                if(j==al.size()) {
   

                    al.add(end);
                }
            }
        }
        System.out.println(al.size());
    }
}

2.题目描述

海洋馆中有n只萌萌的小海豚,初始均为0岁,每只小海豚的寿命是m岁,且这些小海豚会在 birthYear[i]间这些年份生产出一位宝宝海豚(1<= birthYear[i]<=m),每位宝宝海刚出生为0岁。

问x年时,携程海洋馆有多少只小海豚?
输入

n(初始海豚数)

m(海豚寿命)

海豚生宝宝的年份数量(假设为p)

海豚生宝宝的年份1

海豚生宝宝的年份p

x(几年后)

输出

n年后有多少只小海豚

思路

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

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

        int _n;
        _n = Integer.parseInt(in.nextLine().trim());

        int _m;
        _m = Integer.parseInt(in.nextLine().trim());

        int _birthYear_size = 0;
        _birthYear_size = Integer.parseInt(in.nextLine().trim());
        int[] _birthYear = new int[_birthYear_size];
        int _birthYear_item;
        for(int _birthYear_i = 0; _birthYear_i < _birthYear_size; _birthYear_i++) {
   
            _birthYear_item = Integer.parseInt(in.nextLine().trim());
            _birthYear[_birthYear_i] = _birthYear_item;
        }

        int _x;
        _x = Integer.parseInt(in.nextLine().trim());

        res = countDolphin(_n, _m, _birthYear, _x);
        System.out.println(String.valueOf(res));

    }
    static long countDolphin(int n, int m, int[] birthYear, int x) {
   
        Set<Integer> set = new HashSet<>();
        for(int i = 0; i < birthYear.length; ++i) set.add(birthYear[i]);
        long[] dp = new long[m+1];
        dp[0] = n;
        for(int i = 0; i < x; ++i){
   
            long newlife = 0;
            for(int j = m-1; j >= 0; --j){
   
                dp[j+1] = dp[j];
                if(set.contains(j+1)) newlife += dp[j+1];
            }
            dp[0] = newlife;
        }
        long sum = 0;
        for (int i = 0; i < m+1; i++) {
   
            sum+=dp[i];
        }
        return sum;
    }
}

3.题目描述

ElasticSearch是常用的开源搜索引擎,支持 fuzzyQuery给搜索带来很大便利。其简单原理如下, surprize有拼写错误,把z换成s后得到 surprise,即纠正一个字母,就可以匹配正确的单词。同样,把 surprize的z替换成s,然后在末尾加个d,可以得到surprised。给定字典[“surprise","“happy",“ctrip”,“travel”,“wellcome”,“student”,“system”,“program”,“editor”]为正确单词。

编程实现单词纠正,判断输入的单词能否在(包含)次纠正操作内得到字典中的单词。

纠正操作是以下三种,

1:替换字符串中的一个字母;

2:删除字符串中的一个字母;

3:在字符串中增加一个字母。

输入

待纠正的单词1

待纠正的单词n

输出

如果可以匹配请返回字典中的单词

如果无法匹配请返回字符串null

样例输入

hipp

样例输出

happy

import java.util.Scanner;

public class Main{
   

    public static void main(String[] args) {
   
        // TODO Auto-generated method stub
        String[] words = {
   "surprise", "happy", "ctrip", "travel", "wellcome", "student", "system", "program", "editor"};
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        for(int m = 0; m < words.length; ++m){
   
            char[] word1 = s.toCharArray();
            char[] word2 = words[m].toCharArray();
            int[][] dp = new int[word1.length+1][word2.length+1];
            for(int i = 0; i < dp.length; ++i) {
   
                dp[i][0] = i;
            }
            for(int i = 0; i < dp[0].length; ++i) {
   
                dp[0][i] = i;
            }
            for(int i = 1; i <= word1.length; ++i){
   
                for(int j = 1; j <= word2.length; ++j){
   
                    if(word1[i-1] == word2[j-1]) {
   
                        dp[i][j] = dp[i-1][j-1];
                    }else{
   
                        dp[i][j] = Math.min(dp[i][j-1], Math.min(dp[i-1][j], dp[i-1][j-1])) + 1;
                    }
                }
            }
            if(dp[word1.length][word2.length] <= 2){
   
                System.out.println(words[m]);
                break;
            }
        }
    }

}


优质文章推荐

1.计算机网络----三次握手四次挥手
2.一篇让你彻底了解http请求报文和响应报文的结构
3.梦想成真-----项目自我介绍
4.一篇让你彻底了解HTTP 的前世今生
5.一篇让你彻底搞定HTTP方法与状态码
6.你们要的设计模式来了
7.震惊!来看《这份程序员面试手册》!!!
8.一字一句教你面试“个人简介”
9.接近30场面试分享