【Leetcode题单】(01 数组篇)刷题关键点总结01【数组的遍历】
【Leetcode题单】(01 数组篇)刷题关键点总结01【数组的遍历】(4题)
- Easy数组的遍历
- 485. 最大连续 1 的个数 Easy
- 495. 提莫攻击 Easy
- 414. 第三大的数 Easy
- 628. 三个数的最大乘积 Easy
大家好,这里是新开的LeetCode刷题系列,以后尽量一天更新一个小章节。此系列应超过400题。
数组篇01《数组的遍历》,共4道题,均简单题。
注意看重点部分,总结起来是这一类题的规律。
Easy数组的遍历
485. 最大连续 1 的个数 Easy
485. 最大连续 1 的个数
public int findMaxConsecutiveOnes(int[] nums) {
int maxCount = 0, count = 0;
for (int num : nums) {
if (num == 1) {
count++;
} else {
maxCount = Math.max(maxCount, count);
count = 0;
}
}
maxCount = Math.max(maxCount, count);
return maxCount;
}
重点
- for循环遍历数组的格式
- Math.max() 的使用
- 采用 count 计数当前连续1数, maxCount 计数最大count
- 在代码尾部加一次判定
495. 提莫攻击 Easy
495. 提莫攻击
public int findPoisonedDuration(int[] timeSeries, int duration) {
int total = 0;
for(int i = 1; i < timeSeries.length; i++){
if (timeSeries[i] - timeSeries[i-1] < duration) {
total += timeSeries[i] - timeSeries[i-1];
} else {
total += duration;
}
}
total += duration;
return total;
}
重点
- timeSeries前后相减计算时长
- for循环的开始位是1
- 尾部增加duration
414. 第三大的数 Easy
414. 第三大的数
public int thirdMax(int[] nums) {
long a = Long.MIN_VALUE, b = Long.MIN_VALUE, c = Long.MIN_VALUE;
for (int num : nums) {
if (num > a) {
c = b;
b = a;
a = num;
} else if (num > b && num < a) {
c = b;
b = num;
} else if (num > c && num < b) {
c = num;
}
}
return c == Long.MIN_VALUE ? (int)a : (int)c;
}
重点
- Long.MIN_VALUE,这个取决于题目中的测试用例范围
- num > b && num < a 这个是因为b!= a,此处看清题目
- 结尾记得将数据类型转为int
628. 三个数的最大乘积 Easy
628. 三个数的最大乘积
public int maximumProduct(int[] nums) {
int max1 = Integer.MIN_VALUE, max2 = Integer.MIN_VALUE, max3 = Integer.MIN_VALUE;
int min1 = Integer.MAX_VALUE, min2 = Integer.MAX_VALUE;
for(int num : nums){
if(max1 < num){
max3 = max2;
max2 = max1;
max1 = num;
}else if(max2 < num){
max3 = max2;
max2 = num;
}else if(max3 < num){
max3 = num;
}
if(num < min1){
min2 = min1;
min1 = num;
}else if(num < min2){
min2 = num;
}
}
return Math.max(max1 * max2 * max3, min1 * min2 * max1);
}
重点
- 使用 minn 和 maxn 来指代第n大的数和第n小的数
- 数据的初始化
- 问题转化为求 三个最大数乘积 与 最大数与两个最小数乘积 的最大值
- 这种做法可以当做模版使用,找第n大的数。
这个系列希望能够帮助大家提高刷题效率,发现系列算法题目的常规思路,更快a题,速通Leetcode
b站【软件柠檬】以后会不定期分享计算机领域基础知识,求职干货,为大家助力实习和春秋招offer
公众号【软件柠檬】也会不定期更新优质内容,分享优质干货资料,希望能够帮助到大家~
❤️这里是 软件柠檬, 让我们一起学习进步~❤️