文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给你一个下标从 0 开始的数组 nums ,数组中有 n 个整数,另给你一个整数 k 。

半径为 k 的子数组平均值 是指:nums 中一个以下标 i 为 中心 且 半径 为 k 的子数组中所有元素的平均值,即下标在 i - k 和 i + k 范围(含 i - k 和 i + k)内所有元素的平均值。
如果在下标 i 前或后不足 k 个元素,那么 半径为 k 的子数组平均值 是 -1 。

构建并返回一个长度为 n 的数组 avgs ,其中 avgs[i] 是以下标 i 为中心的子数组的 半径为 k 的子数组平均值 。

x 个元素的 平均值 是 x 个元素相加之和除以 x ,此时使用截断式 整数除法 ,即需要去掉结果的小数部分。

例如,四个元素 2、3、1 和 5 的平均值是 (2 + 3 + 1 + 5) / 4 = 11 / 4 = 3.75,截断后得到 3 。

示例 1:

输入:nums = [7,4,3,9,1,8,5,2,6], k = 3
输出:[-1,-1,-1,5,4,4,-1,-1,-1]
解释:
- avg[0]、avg[1] 和 avg[2] 是 -1 ,因为在这几个下标前的元素数量都不足 k 个。
- 中心为下标 3 且半径为 3 的子数组的元素总和是:7 + 4 + 3 + 9 + 1 + 8 + 5 = 37 。使用截断式 整数除法,avg[3] = 37 / 7 = 5 。
- 中心为下标 4 的子数组,avg[4] = (4 + 3 + 9 + 1 + 8 + 5 + 2) / 7 = 4 。
- 中心为下标 5 的子数组,avg[5] = (3 + 9 + 1 + 8 + 5 + 2 + 6) / 7 = 4 。
- avg[6]、avg[7] 和 avg[8] 是 -1 ,因为在这几个下标后的元素数量都不足 k 个。示例 2:
输入:nums = [100000], k = 0
输出:[100000]
解释:
- 中心为下标 0 且半径 0 的子数组的元素总和是:100000 。avg[0] = 100000 / 1 = 100000 。示例 3:
输入:nums = [8], k = 100000
输出:[-1]
解释:
- avg[0] 是 -1 ,因为在下标 0 前后的元素数量均不足 k 。 提示:
n == nums.length
1 <= n <= 10^5
0 <= nums[i], k <= 10^5

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/k-radius-subarray-averages
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

class Solution {public:vector<int> getAverages(vector<int>& nums, int k) {long long n = nums.size(), sum = 0, idx = k;vector<int> avg(n, -1);for(int i = 0; i < min(2LL*k, n); ++i)sum += nums[i]; // 前2k个数字的和for(int i = 2*k; i < n; ++i){sum += nums[i];//加上进入窗口的avg[idx++] = sum/(2*k+1);sum -= nums[i-2*k];//左端要退出窗口的,减去}return avg;}
};

156 ms 126.5 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 2090. 半径为 k 的子数组平均值(滑窗)相关推荐

  1. 力扣 2090. 半径为 k 的子数组平均值

    题目 给你一个下标从 0 开始的数组 nums ,数组中有 n 个整数,另给你一个整数 k . 半径为 k 的子数组平均值 是指:nums 中一个以下标 i 为 中心 且 半径 为 k 的子数组中所有 ...

  2. 5939. 半径为 k 的子数组平均值

    5939. 半径为 k 的子数组平均值 给你一个下标从 0 开始的数组 nums ,数组中有 n 个整数,另给你一个整数 k . 半径为 k 的子数组平均值 是指:nums 中一个以下标 i 为 中心 ...

  3. LeetCode 713. 乘积小于K的子数组(滑动窗口)

    1. 题目 给定一个正整数数组 nums. 找出该数组内乘积小于 k 的连续的子数组的个数. 示例 1: 输入: nums = [10,5,2,6], k = 100 输出: 8 解释: 8个乘积小于 ...

  4. LeetCode 560. 和为K的子数组(前缀和差分)

    1. 题目 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数. 示例 1 : 输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1 ...

  5. 11. Leetcode 713. 乘积小于K的子数组 (数组-同向双指针-滑动窗口)

    给定一个正整数数组 nums和整数 k .请找出该数组内乘积小于 k 的连续的子数组的个数.示例 1:输入: nums = [10,5,2,6], k = 100 输出: 8 解释: 8个乘积小于10 ...

  6. 力扣刷题笔记:1438. 绝对差不超过限制的最长连续子数组(滑窗模板题,选择有序列表SortedList()数据类型就不会超时)

    题目: 1438.绝对差不超过限制的最长连续子数组 给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 ...

  7. LeetCode 930. 和相同的二元子数组(哈希+前缀和)

    文章目录 1. 题目 2. 解题 1. 题目 在由若干 0 和 1 组成的数组 A 中,有多少个和为 S 的非空子数组. 示例: 输入:A = [1,0,1,0,1], S = 2 输出:4 解释: ...

  8. 2022-6-13 咒语和药水的成功对数,替换字符后匹配,统计得分小于 K 的子数组数目,......

    1. 咒语和药水的成功对数 You are given two positive integer arrays spells and potions, of length n and m respec ...

  9. [Leedcode][JAVA][第560题][和为K的子数组][Hashmap][数组]

    [问题描述][第560题][和为K的子数组][中等] 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数.示例 1 :输入:nums = [1,1,1], k = 2 输 ...

最新文章

  1. android录制视频横向,Android从零开始(26)(设置全屏+横屏、相机拍照、视频录制)(新)...
  2. day 01 python爬虫原理
  3. VTK:PolyData之TriangleColoredPoints
  4. wuxiu.SqlHelper 2.0 源码下载
  5. 论文浅尝 - EMNLP2020 | 通过词重排序跨语言解析
  6. Spring(4)--- hello world实例
  7. linux下配置SVN搭建 centos svn安装配置
  8. jqgrid点击搜索无法重置参数问题
  9. oracle wmsys.wm_concat函数
  10. golang 格式“占位符”%d,%f,%s等应用类型
  11. 采用泰克示波器TBS2000和TCP0030A电流探头准确评估高速DCDC转换器电感的选择
  12. 盘点关于程序员的那些经典案例
  13. 用产品思维设计API(二)——数据解耦,才是前后分离的本质
  14. 纯洁的心--佩雷尔曼
  15. 【免费办公软件】万彩办公大师教程丨文件批量解压工具
  16. 小单刷题笔记之鲁卡斯队列(浮点数比较)
  17. 如何使用计算机管理员账户,Win7系统怎么开启Administrator管理员账号及权限?
  18. 如何判断微信/判断支付宝退款超期
  19. 数据仓库面试总结大全,深度解析底层逻辑
  20. SIM800C 透传模式与非透传模式测试对比

热门文章

  1. pmp思维导图 第六版_PMP考试技巧攻略(上)
  2. 基于matlab的大米,大米颗数计算MATLAB软件
  3. 解决 :sudo:/etc/sudoers 可被任何人写
  4. 关于用VS写C程序运行时出现烫字以及乱码的问题的原因
  5. Ansible执行过程分析、异步模式和速度优化
  6. 第七季1:MP4文件格式解析
  7. c++远征之多态篇——虚函数及其实现原理
  8. 假如我们的坦克继续前进队——需求改进系统设计
  9. css 做幻灯片效果
  10. VC 6中使用不同调用规范的函数在符号文件里的表示方式