2020.8.12
/**
* @param {number[]} timeSeries
* @param {number} duration
* @return {number}
*/
var findPoisonedDuration = function(timeSeries, duration) {
var i;
var t=0;
for(i=1;i<timeSeries.length;i++){
if(timeSeries[i]-timeSeries[i-1]>=duration){
t=t+duration;
}
else{
t=t+timeSeries[i]-timeSeries[i-1];
}
}
if(timeSeries.length==0){
return 0;
}else{
return t+duration;
}
};
思路:便利循环数组,判断第i个值和第i-1个值差和中毒时间的大小,如果大于等于中毒时长,则中毒时间就是中毒时长。如果小于中毒时长,则中毒时间就是i与i-1的差。数组最后一位不在循环里且中毒时间一定为中毒时长,所以需要返回t+中毒时长。数组可以为空,判断数组长度是否为空,如果为空,则返回0。用t记录总共中毒时间
/**
* @param {number[]} nums
* @return {number}
*/
var thirdMax = function(nums) {
var i,j;
var max=0;
var a=0,b=0;
for(i=0;i<nums.length-1;i++){
for(j=0;j<nums.length-i-1;j++){
if(nums[j]<nums[j+1]){
max=nums[j];
nums[j]=nums[j+1];
nums[j+1]=max;
}
}
}
for(j=0;j<nums.length;j++){
if(nums[j]==nums[j+1]){
a++;
}
else{
b++;
}
if(b==3){
break;
}
}
if(b>2){
return nums[2+a];
}
else{
return nums[0];
}
};利用冒泡排序法降序排列数组,然后便利排列好的数组,判断当前索引和下一个索引值是否相同,相同则a+1,不同则b+1,当b等于3的时候就已经找出来第三个数了,然后判断b是否大于2,大于2则说明数组里面有第三大的数,返回第三大的数,因为若无一样的数,则第三大的数在索引2,且a为0,若有一样的数,则第三大的数为a+2,即本该在的位子加上被一样的值占领的位置,反之则没有第三大的数,将最大值(索引为0的数组值)返回。
