[解题报告] 《C语言入门100例》(第10例) 平均数

简介: [解题报告] 《C语言入门100例》(第10例) 平均数

零、写在前面


       这个系列不经常更新,今天这个题目又双叒叕觉得有点意思,我们一起看一看,主要知识点在


《C语言入门100例》(第10例) 平均数

https://blog.csdn.net/WhereIsHeroFrom/article/details/118208466


一、主要知识点


       1.强制类型转换


       由于平均数会是一个浮点数,在计算的时候会用到类型转换。求平均数的时候double/int返回的值仍然是double。


int a,n,i;
double avg = 0;
for(int i = 0;i < n;++i){
    scanf("%d",&a);
    avg += a; //强制类型转换
}
avg /= n;    //第二次
printf("%.2f\n",avg);

       2.滑动窗口(补充知识点)


               当我们求长度为k的连续子序列的时候,每次都要回溯,浪费大量的时间。看两张图对比,可以发现

image.png

     

image.png

      image.png


for(int i = 0;i < k;++i)    sum += nums[i];//最前面的初始化
    int maxsum = sum;
    for(int i = k;i < numsSize;++i){            //滑动窗口计算每个子序列的和
        sum += nums[i];            //加入当前值
        sum -= nums[i - k];        //减去滑动窗口最前面的值
        maxsum = sum > maxsum? sum :maxsum;//更新最大值
    }

二、课后习题


  643. 子数组最大平均数 I


643. 子数组最大平均数 I

https://leetcode-cn.com/problems/maximum-average-subarray-i/


思路


利用上面说到的滑动窗口统计返回值就好了,注意类型转换。

double findMaxAverage(int* nums, int numsSize, int k){
    int sum = 0;
    //滑动窗口统计
    for(int i = 0;i < k;++i)    sum += nums[i];
    int maxsum = sum;
    for(int i = k;i < numsSize;++i){
        sum += nums[i];
        sum -= nums[i - k];
        maxsum = sum > maxsum? sum :maxsum;
    }
    //返回相应的结果
    return (double) maxsum /k;
}


结果分析

image.png


凑合玩



写在最后


这个系列确实是不怎么更新,但是我觉得有难度的题都会进行更新,所以还是建立一个合集,有需要的欢迎关注。


相关文章
|
2月前
|
安全 编译器 C语言
C++入门1——从C语言到C++的过渡
C++入门1——从C语言到C++的过渡
68 2
|
18天前
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
71 3
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
2月前
|
存储 Java 编译器
初识C语言1——C语言入门介绍
初识C语言1——C语言入门介绍
35 1
|
2月前
|
C语言
回溯入门题,数据所有排列方式(c语言)
回溯入门题,数据所有排列方式(c语言)
|
4月前
|
C语言
C语言------程设设计入门
这篇文章是C语言程序设计的入门教程,涵盖了C程序的实现过程、VC集成开发环境的使用、基本数据类型的使用、格式控制字符的作用,以及通过示例代码演示了如何使用printf()函数输出不同类型的数据。
C语言------程设设计入门
|
5月前
|
存储 Java C语言
【C语言入门】初识C语言:掌握编程的基石
【C语言入门】初识C语言:掌握编程的基石
71 4
【C语言入门】初识C语言:掌握编程的基石
|
4月前
|
NoSQL Java 编译器
C语言从入门到精通该怎样学?
持续学习与实践:编程是一门需要不断学习和实践的技能,要保持对新技术和新知识的敏感性,并持续进行编程实践。
66 1
|
5月前
|
存储 Java 程序员
【C语言入门】C语言入门:探索编程世界的基础概念
【C语言入门】C语言入门:探索编程世界的基础概念
119 2
|
5月前
|
前端开发 C语言 C++
C语言入门02---环境搭建
C语言入门02---环境搭建
|
6月前
|
存储 Web App开发 算法
c语言的简单入门
熟悉c语言(简单入门)