LeetCode每日一题(持续更新中~~~)

news/2024/10/30 23:16:41/

文章目录

  • 2432. 处理用时最长的那个任务的员工5.5
  • 1419. 数青蛙5.6
  • 1010. 总持续时间可被 60 整除的歌曲5.7
  • 2290. 到达角落需要移除障碍物的最小数目5.8
  • 2437. 有效时间的数目5.9

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 。

思路

使用计数的方式,创建一个数组,判断当前字符出现的次数以及当前字符的顺序(遍历后面字符的时候会判断前一个是否为0,以此来形成一个有顺序的鸣叫),如果当前字符合理,就将当前的数组计数加一,将前一个数组计数减一。因此当最终遍历完成如果有效的话所有计数应当全部为0;要判断同时有几只青蛙,只需要判断在数组中同时出现的最大数目。

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;}
}

1010. 总持续时间可被 60 整除的歌曲5.7

  • 在歌曲列表中,第 i 首歌曲的持续时间为 time[i] 秒。
  • 返回其总持续时间(以秒为单位)可被 60 整除的歌曲对的数量。形式上,我们希望下标数字 i 和 j 满足 i < j 且有 (time[i] + time[j]) % 60 == 0。

思路

使用双重for循环显然是可以直接实现的,但是那样的话时间复杂度是O(n^2)。
所以我们的思路是创建一个长度为61数组,用来记录当前索引数下的数字量,当一个数对60取余得到的数加上60减去这个数的值必定可以对60取余为0,所以只需记录遍历的数对60取余对应的数组的索引,然后将所有与之相加为60的数的数量记录下来。

public class Sulotion1010 {public int numPairsDivisibleBy60(int[] time) {int res = 0;int[] count = new int[61];for (int i = 0; i < time.length; i++) {res += count[(60 - time[i] % 60) % 60];count[time[i] % 60]++;}return res;}
}

2290. 到达角落需要移除障碍物的最小数目5.8

  • 给你一个下标从 0 开始的二维整数数组 grid ,数组大小为 m x n 。每个单元格都是两个值之一:
    0 表示一个 空 单元格,
  • 1 表示一个可以移除的 障碍物 。
  • 你可以向上、下、左、右移动,从一个空单元格移动到另一个空单元格。
  • 现在你需要从左上角 (0, 0) 移动到右下角 (m - 1, n - 1) ,返回需要移除的障碍物的 最小 数目。

这个题优点难度,目前自己完全不能解决,等后续持续学习
这个题主要用到图的广度优先遍历

2437. 有效时间的数目5.9

  • 给你一个长度为 5 的字符串 time ,表示一个电子时钟当前的时间,格式为 “hh:mm” 。最早 可能的时间是 “00:00” ,最晚 可能的时间是 “23:59” 。
  • 在字符串 time 中,被字符 ? 替换掉的数位是 未知的 ,被替换的数字可能是 0 到 9 中的任何一个。
  • 请你返回一个整数 answer ,将每一个 ? 都用 0 到 9 中一个数字替换后,可以得到的有效时间的数目。
    思路

时间一共由四个数组组成,将这四个数字分离出来进行单独判断

import java.util.ArrayList;public class Sulotion2437 {public int countTime(String time) {int res = 1;ArrayList<Integer> arrayList = new ArrayList();String[] str = time.split("");if (str[0].equals("?") && str[1].equals("?")) {res *= 24;} else {if (str[0].equals("?")) {if (Integer.parseInt(str[1]) < 4) {res *= 3;} else {res *= 2;}}if (str[1].equals("?")) {if (Integer.parseInt(str[0]) == 2) {res *= 4;} else {res *= 10;}}}if (str[3].equals("?")) {res *= 6;}if (str[4].equals("?")) {res *= 10;}return res;}
}

http://www.ppmy.cn/news/62822.html

相关文章

大数据技术之Kettle

目录 第1章 Kettle概述 1.1 ETL简介 1.2 Kettle简介1.2.1 Kettle是什么 1.2.2 Kettle的两种设计 1.2.3 Kettle的核心组件 1.2.4 Kettle特点 第2章 Kettle安装部署 2.1 Kettle下载 2.1.1 下载地址 2.1.2 Kettle目录说明 2.1.3 Kettle文件说明 2.2 Kettle安装部署 …

JavaWeb综合案例-Servlet优化

将WebServlet的访问路径不要写死&#xff0c;写成通配符的形式 1. 反射笔记&#xff08;后续代码会用到该机制&#xff09; 1.1 基础概念 JAVA反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&am…

国产光伏仪器 6581太阳能电池板伏安特性测试仪

6581太阳能电池板伏安特性测试仪主要用于太阳能电池板生产的最终测试&#xff0c;也可以作为层压前测试使用&#xff0c;能大大提高一次封装成品率。该测试仪适合于单晶、多晶、薄膜等多种电池组件&#xff0c;可进行I-V曲线、P-V曲线、短路电流、开路电压、峰值功率等全部参数…

PID算法(位置式pid算法和增量式pid算法)

这里写目录标题 PID算法介绍比例环节比例积分环节比例积分微分环节 位置式PID增量式PIDPID参数整定采样周期选择PID参数整定方法![请添加图片描述](https://img-blog.csdnimg.cn/849bf1672243484699b131b487f05a55.png)试凑法临界比例法一般调节法 PID算法介绍 PID 算法是闭环…

手把手教你使用gtest写单元测试

开源框架&#xff1a;gtest&#xff0c;它主要用于写单元测试&#xff0c;检查真自己的程序是否符合预期行为。这不是QA&#xff08;测试工程师&#xff09;才学的&#xff0c;也是每个优秀后端开发codoer的必备技能。 本期博文内容及使用的demo&#xff0c;参考&#xff1a; …

腾讯高工手写13W字“Netty速成手册”,3天走向实战

前言 在java界&#xff0c;netty无疑是开发网络应用的拿手菜。你不需要太多关注复杂的nio模型和底层网络的细节&#xff0c;使用其丰富的接口&#xff0c;可以很容易的实现复杂的通讯功能。 作为当前最流行的NIO框架&#xff0c;Netty在互联网领域、大数据分布式计算领域、游…

Javascript面试题:20道含答案和代码示例的练习题

请写出一个将字符串转换为数字的函数&#xff0c;例如将字符串“123”转换为数字123。 function stringToNumber(str) {return Number(str); }请写出一个将数字转换为字符串的函数&#xff0c;例如将数字123转换为字符串“123”。 function numberToString(num) {return num.…

【ED合集】事件检测的文章

1 CorED: Incorporating Type-level and Instance-level Correlationsfor Fine-grained Event Detection 论文来源&#xff1a;SIGIR 2022(CCF A类会议) 论文链接&#xff1a;https://dl.acm.org/doi/pdf/10.1145/3477495.3531956 代码链接&#xff1a;GitHub - JiaweiSheng…