当前位置:网站首页>Leetcode daily question (2090. K radius subarray averages)
Leetcode daily question (2090. K radius subarray averages)
2022-07-03 09:33:00 【wangjun861205】
You are given a 0-indexed array nums of n integers, and an integer k.
The k-radius average for a subarray of nums centered at some index i with the radius k is the average of all elements in nums between the indices i - k and i + k (inclusive). If there are less than k elements before or after the index i, then the k-radius average is -1.
Build and return an array avgs of length n where avgs[i] is the k-radius average for the subarray centered at index i.
The average of x elements is the sum of the x elements divided by x, using integer division. The integer division truncates toward zero, which means losing its fractional part.
For example, the average of four elements 2, 3, 1, and 5 is (2 + 3 + 1 + 5) / 4 = 11 / 4 = 2.75, which truncates to 2.
Example 1:
Input: nums = [7,4,3,9,1,8,5,2,6], k = 3
Output: [-1,-1,-1,5,4,4,-1,-1,-1]
Explanation:
- avg[0], avg[1], and avg[2] are -1 because there are less than k elements before each index.
- The sum of the subarray centered at index 3 with radius 3 is: 7 + 4 + 3 + 9 + 1 + 8 + 5 = 37.
Using integer division, avg[3] = 37 / 7 = 5. - For the subarray centered at index 4, avg[4] = (4 + 3 + 9 + 1 + 8 + 5 + 2) / 7 = 4.
- For the subarray centered at index 5, avg[5] = (3 + 9 + 1 + 8 + 5 + 2 + 6) / 7 = 4.
- avg[6], avg[7], and avg[8] are -1 because there are less than k elements after each index.
Example 2:
Input: nums = [100000], k = 0
Output: [100000]
Explanation:
- The sum of the subarray centered at index 0 with radius 0 is: 100000.
avg[0] = 100000 / 1 = 100000.
Example 3:
Input: nums = [8], k = 100000
Output: [-1]
Explanation:
- avg[0] is -1 because there are less than k elements before and after index 0.
Constraints:
- n == nums.length
- 1 <= n <= 105
- 0 <= nums[i], k <= 105
Maintain a queue , take nums The numbers in are put into the queue in turn , Always in the queue 2 * k + 1 Elements , In this way, every time you join the team, you leave the team , We can work it out avg[i-k-1], among i To point to nums The next element to join the team index
impl Solution {
pub fn get_averages(nums: Vec<i32>, k: i32) -> Vec<i32> {
let mut ans = vec![-1; nums.len()];
if (nums.len() as i32) < 2 * k + 1 {
return ans;
}
let mut i = 0;
let mut stack = Vec::new();
let mut sum = 0i64;
while i < 2 * k as usize + 1 {
let v = nums[i];
stack.push(v);
sum += v as i64;
i += 1;
}
ans[i - k as usize - 1] = (sum / stack.len() as i64) as i32;
while i < nums.len() {
stack.push(nums[i]);
sum += nums[i] as i64;
let p = stack.remove(0);
sum -= p as i64;
i += 1;
ans[i - k as usize - 1] = (sum / stack.len() as i64) as i32;
}
ans
}
}
边栏推荐
- Detailed steps of windows installation redis
- LeetCode每日一题(968. Binary Tree Cameras)
- Flink-CDC实践(含实操步骤与截图)
- Windows安装Redis详细步骤
- Jestson nano custom root file system creation (supports the smallest root file system of NVIDIA Graphics Library)
- NPM install installation dependency package error reporting solution
- [set theory] order relation (chain | anti chain | chain and anti chain example | chain and anti chain theorem | chain and anti chain inference | good order relation)
- Hudi integrated spark data analysis example (including code flow and test results)
- [solution to the new version of Flink without bat startup file]
- [point cloud processing paper crazy reading cutting-edge version 12] - adaptive graph revolution for point cloud analysis
猜你喜欢
Redis learning (I)
Spark 概述
LeetCode每日一题(931. Minimum Falling Path Sum)
npm install安装依赖包报错解决方法
Learning C language from scratch -- installation and configuration of 01 MinGW
Flink-CDC实践(含实操步骤与截图)
Temper cattle ranking problem
Win10安装ELK
[graduation season | advanced technology Er] another graduation season, I change my career as soon as I graduate, from animal science to programmer. Programmers have something to say in 10 years
[kotlin puzzle] what happens if you overload an arithmetic operator in the kotlin class and declare the operator as an extension function?
随机推荐
Liteide is easy to use
LeetCode每日一题(931. Minimum Falling Path Sum)
npm install安装依赖包报错解决方法
Windows安装Redis详细步骤
【Kotlin学习】类、对象和接口——带非默认构造方法或属性的类、数据类和类委托、object关键字
NPM install installation dependency package error reporting solution
Arduino handles JSON data, arduinojson assistant
LeetCode每日一题(745. Prefix and Suffix Search)
307. Range Sum Query - Mutable
Spark structured stream writing Hudi practice
Flink-CDC实践(含实操步骤与截图)
WARNING: You are using pip ; however. Later, upgrade PIP failed, modulenotfounderror: no module named 'pip‘
Spark 结构化流写入Hudi 实践
Build a solo blog from scratch
数字身份验证服务商ADVANCE.AI顺利加入深跨协 推进跨境电商行业可持续性发展
Overview of database system
Matlab dichotomy to find the optimal solution
Win10 install elk
Crawler career from scratch (IV): climb the bullet curtain of station B through API
Using Hudi in idea