文章目录
2432. 处理用时最长的那个任务的员工5.5
共有 n 位员工,每位员工都有一个从 0 到 n - 1 的唯一 id 。
给你一个二维整数数组 logs ,其中 logs[i] = [idi, leaveTimei] :
- idi 是处理第 i 个任务的员工的 id ,且leaveTimei 是员工完成第 i 个任务的时刻。所有 leaveTimei 的值都是 唯一 的。
- 注意,第 i 个任务在第 (i - 1) 个任务结束后立即开始,且第 0 个任务从时刻 0 开始。
返回处理用时最长的那个任务的员工的 id 。如果存在两个或多个员工同时满足,则返回几人中 最小 的 id 。
思路
public class Sulotion2432 {
public int hardestWorker(int n, int[][] logs) {
if (n == 1) {
return 0;
}
int res = logs[0][1];
int flag = logs[0][0];
for (int i = 1; i < logs.length; i++) {
int usid = logs[i][0];
int temp = logs[i][1] - logs[i - 1][1];
if (temp > res || (temp == res && usid < flag)) {
res = temp;
flag = logs[i][0];
}
}
return flag;
}
}
1419. 数青蛙5.6
给你一个字符串 croakOfFrogs,它表示不同青蛙发出的蛙鸣声(字符串 “croak” )的组合。由于同一时间可以有多只青蛙呱呱作响,所以 croakOfFrogs 中会混合多个 “croak” 。
请你返回模拟字符串中所有蛙鸣所需不同青蛙的最少数目。
要想发出蛙鸣 “croak”,青蛙必须 依序 输出 ‘c’, ’r’, ’o’, ’a’, ’k’ 这 5 个字母。如果没有输出全部五个字母,那么它就不会发出声音。如果字符串 croakOfFrogs 不是由若干有效的 “croak” 字符混合而成,请返回 -1 。
思路
public class Sulotion1419 {
public static int minNumberOfFrogs(String croakOfFrogs) {
if (croakOfFrogs.length() % 5 != 0) {
return -1;
}
int[] count = new int[4];
int res = 0;
for (int i = 0; i < croakOfFrogs.length(); i++) {
char c = croakOfFrogs.charAt(i);
if (c != 'c' & c != 'r' & c != 'o' & c != 'a' & c != 'k'){
return -1;
}
switch (c){
case 'c': count[0]++; break;
case 'r': if(count[0]==0) return -1; count[0]--; count[1]++; break;
case 'o': if(count[1]==0) return -1; count[1]--; count[2]++; break;
case 'a': if(count[2]==0) return -1; count[2]--; count[3]++; break;
case 'k': if(count[3]==0) return -1; count[3]--; break;
}
// 判断同时有几只青蛙在叫
res = Math.max(res, count[0]+count[1]+count[2]+count[3]);
}
// 判断叫声是否完整
return count[0]+count[1]+count[2]+count[3] == 0 ? res : -1;
}
}