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的数组值)返回。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务