1.1 分析题意
- 首先:我们求的是连续的1的个数,所以我们不能也没必要对数组进行排序;
- 其次:只要求求出最大连续1的个数,并不要求具体的区间数目,所以我们只需要用一个值来记录这个结果;
1.2 思路分析:
一个for循环遍历数组里面的每一个元素,当前元素有两种情况:
1.3 复杂度分析
时间复杂度: O(n)
空间复杂度: O(1)
2.1 题意理解
我觉得这道题的关键点在:
如果提莫在中毒影响结束 前再次攻击, 中毒状态计时器将会重置,在新的攻击之后,中毒影响将会在
duration
秒后结束。
翻译成人话就是:中毒期间再次中毒,会按照新的中毒终止时间计算。
2.2 思路分析
2.3 复杂度分析
时间复杂度: O(n)
空间复杂度: O(1)
3.1 题意理解
找到一个无序数组中第三大的数字;如果这个是不存在第三大的数字,那就返回最大的数字。
3.2 思路分析
一个最简单的方法就是:将数字遍历,然后从后往前进行遍历,找到第三大的数字。
但是该方法的时间复杂度为: O(n*logn)
,空间复杂度为: O(logn)
另一种方法是:我们不需要排序,但是使用最传统的模拟方法:用三个值来记录所有数据中的最大的三个,具体来说:
在实现的过程中,有一个细节就是:使用 Integer
类型的变量,根据是否为 null
来标识是否进行了赋值操作,这样就可以进行统一操作,而不需要记录已经记录的数目。
if(a == null || x > a){
c = b;
b = a;
a = x;
}else if(a > x && (b == null || x > b)){
c = b;
b = x;
}else if((b != null && b > x) && (c == null || x > c)){
c = x;
}
3.3 复杂度分析
时间复杂度: O(n)
空间复杂度: O(1)
4.1 题意理解
从数组中任意选出三个数,同一个数不可以重复取,求出可以达到的最大乘积。
4.2 思路分析
4.3 复杂度分析
时间复杂度: O(n*logn)
空间复杂度: O(logn)
Original: https://www.cnblogs.com/404er/p/leetcode_array_traversal.html
Author: 睡觉不打呼
Title: 数组遍历
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/644396/
转载文章受原作者版权保护。转载请注明原作者出处!