ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数组的遍历

2022-09-12 14:03:39  阅读:190  来源: 互联网

标签:遍历 nums int max num sec 数组 thd


很多天没有上力扣刷题了,感觉都生疏很多,今天重新开始,按照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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有