软件工程学费,网站怎么优化到首页,网页设计的心得500字,深圳电器公司招聘题目#xff1a;
给你一个下标从 0 开始的数组 nums #xff0c;数组中有 n 个整数#xff0c;另给你一个整数 k 。
半径为 k 的子数组平均值 是指#xff1a;nums 中一个以下标 i 为 中心 且 半径 为 k 的子数组中所有元素的平均值#xff0c;即下标在 i - k 和 i k 范…题目
给你一个下标从 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 2.75截断后得到 2 。
思路定长滑动窗口 入 更新 出
代码
class Solution {public int[] getAverages(int[] nums, int k) {int n nums.length;int[] ans new int[n];long sum 0; // 防止溢出if (n 2 * k 1) {java.util.Arrays.fill(ans, -1);return ans;}for (int i 0; i n; i) {if (i k || i n - 1 - k)ans[i] -1;sum nums[i];if (i 2 * k )continue;ans[i - k] (int) (sum / (2 * k 1));sum - nums[i - 2 * k];}return ans;}
}
性能
时间复杂度on
空间复杂度o1