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场面试分享