数组篇
485
给定一个二进制数组 nums
, 计算其中最大连续 1
的个数。
示例 1:
输入:nums = [1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.
示例 2:
输入:nums = [1,0,1,1,0,1] 输出:2
%%最大连续1的个数
int findMaxConsecutiveOnes(int* nums, int numsSize) {
int i=0;
int max=0;
int count=0;
for(i=0;i<numsSize;i++)
{
if(nums[i]==1){
count+=1;
if(count>max)
{
max=count;
}
}
else
count=0;
}
return max;
}
495
在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。
当提莫攻击艾希,艾希的中毒状态正好持续 duration
秒。
正式地讲,提莫在 t
发起攻击意味着艾希在时间区间 [t, t + duration - 1]
(含 t
和 t + duration - 1
)处于中毒状态。如果提莫在中毒影响结束 前 再次攻击,中毒状态计时器将会 重置 ,在新的攻击之后,中毒影响将会在 duration
秒后结束。
给你一个 非递减 的整数数组 timeSeries
,其中 timeSeries[i]
表示提莫在 timeSeries[i]
秒时对艾希发起攻击,以及一个表示中毒持续时间的整数 duration
。
返回艾希处于中毒状态的 总 秒数。
int findPoisonedDuration(int* timeSeries, int timeSeriesSize, int duration){
int count = 0;
for(int i = 1; i < timeSeriesSize; i++)
{
int a = timeSeries[i] - timeSeries[i-1];
if( a >= duration)
count += duration;
else
count += a;
}
return count + duration;
}