假设一个数组长度为100
连续长度定为10
参考值为 x
如果array[0]~array[9] 的和大于x
,则array[0]是想要的点
如果array[1]~array[10] 的和大于x
,则array[1]也是想要的点
。。。。。。
如果array[y]~array[y+9] 的和大于x
,则array[y]也是想要的点
找出所有的点
假设一个数组长度为100
连续长度定为10
参考值为 x
如果array[0]~array[9] 的和大于x
,则array[0]是想要的点
如果array[1]~array[10] 的和大于x
,则array[1]也是想要的点
。。。。。。
如果array[y]~array[y+9] 的和大于x
,则array[y]也是想要的点
找出所有的点
思路与楼上一致。C实现。
void func(int *array,int x)
{
int i;
int sum=0;
for(i=0;i<10;i++)
sum+=array[i];
if(sum>x)
printf("array[0]=%d\n",array[0]);
for(i=1;i<=90;i++)
{
sum=sum-array[i-1]+array[i+9];
if(sum>x)
printf("array[%d]=%d\n",i,array[i]);
}
}
扫面一遍数组array,计算出一个新数组sum_array,其中sum_array[i+1] = array[0]+ .. + array[i](sum_array[0] = 0);
扫描一遍sum_array[i],找出所有的i, sum_array[i + 10] -sum_array[i] == x, 则i为满足条件的点。
1 回答1.1k 阅读✓ 已解决
1 回答1.4k 阅读
1.2k 阅读
943 阅读
815 阅读
785 阅读
640 阅读
需求只是array[0]+...+array[9]>x么?
golang版本
思路就是先把前l个加起来判断是否大于x,然后sum加一个新的,减掉一个老的,在判断是否大于x,循环一次O(n)