数组的遍历
作者:互联网
很多天没有上力扣刷题了,感觉都生疏很多,今天重新开始,按照https://leetcode.cn/circle/article/48kq9d/帖子刷题
加油
/*485、最大连续1的个数*/
/*思路:遍历,判断,比较*/
/*通过*/
public int findMaxConsecutiveOnes(int[] nums) {
int max = 0, tmp = 0;
for (int num : nums) {
if (num == 1) {
tmp++;
} else {
tmp = 0;
}
max = Math.max(tmp, max);
}
return max;
}
/*495、提莫攻击*/
/*
* 思路一:
* 遍历,判断当前元素加d-1是否小于下一个元素,如果小于,证明不会重合,加上d
* 否则说明会重合,加上下一个元素减去当前元素的值
* */
/*通过*/
public int findPoisonedDuration(int[] timeSeries, int duration) {
int sum = duration;
int n = timeSeries.length;
for (int i = 0; i < n - 1; i++) {
if (timeSeries[i] + duration - 1 < timeSeries[i + 1]) {
sum += duration;
} else {
sum += timeSeries[i + 1] - timeSeries[i];
}
}
return sum;
}
/*414、第三大的数*/
/*思路一:判断,替换*/
/*注意转换类型*/
/*通过*/
public int thirdMax(int[] nums) {
int n = nums.length;
if (n == 1) return nums[0];
if (n == 2) return Math.max(nums[0], nums[1]);
long fir = Long.MIN_VALUE, sec = Long.MIN_VALUE, thd = Long.MIN_VALUE;
for (int num : nums) {
if (num > fir) {
thd = sec;
sec = fir;
fir = num;
} else if (num > sec && num < fir) {
thd = sec;
sec = num;
} else if (num > thd && num < sec) {
thd = num;
}
}
return thd == Long.MIN_VALUE ? (int)fir : (int)thd;
}
/*628、三个数的最大乘积*/
/*
思路一:排序,判断前两个数、最后一个数的乘积和最后三个数的乘积
抛开只有正数和负数的情况,如果有正有负,只可能是两正一负,所以取前两个和最后一个
*/
public int maximumProduct(int[] nums) {
Arrays.sort(nums);
int n = nums.length;
return Math.max(nums[0] * nums[1] * nums[n - 1], nums[n - 3] * nums[n - 2] * nums[n - 1]);
}
标签:遍历,nums,int,max,num,sec,数组,thd 来源: https://www.cnblogs.com/atomo/p/16686041.html