| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Navigation
- array
- event
- MySQL
- component
- BinaryTree
- count
- route
- Props
- 비트연산
- JSX
- map
- Context
- Callback
- bit
- DP
- state
- routes
- leetcode
- treenode
- css
- React
- axios
- UE5
- priority_queue
- server
- queue
- c++
- node.js
- nodeJS
- Today
- Total
우사미 코딩
[Leetcode] 2090. K Radius Subarray Averages 본문
1. 문제링크
https://leetcode.com/problems/k-radius-subarray-averages
K Radius Subarray Averages - LeetCode
Can you solve this real interview question? K Radius Subarray Averages - 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 elem
leetcode.com
2. 키 포인트
현재 인덱스까지 더한값을 저장하는 배열을 만들고 업데이트한다
nums = [1,2,3,4]라면
sums = [1,3,6,10]가 된다.
vector의 자료형을 int로 하면 overflow가 발생하므로 64-bit integer type으로 한다.
k는 radius(반지름)인데 현재 인덱스를 기준으로 양 옆이 idx-k < 0 이거나 idx+k >= nums.size()가 되는 경우는 값이 -1가 되고그렇지 않은 경우에는 현재 인덱스 값을 idx +- k의 합의 평균으로 업데이트한다.
3. solution
class Solution {
public:
vector<int> getAverages(vector<int>& nums, int k) {
int n = nums.size(), maxLen = k * 2 + 1;
vector<int> v(n, -1);
vector<long long> presum(n, 0);
presum[0] = nums[0];
for(int i = 1; i < n; i++){
presum[i] = nums[i] + presum[i-1];
}
for(int i = k; i < n-k; i++){
long long sum = presum[i+k];
if(i+k+1 > maxLen)
sum -= presum[i-k-1];
v[i] = sum / maxLen;
}
return v;
}
};
'Leetcode' 카테고리의 다른 글
| [Leetcode] 1466. Reorder Routes to Make All Paths Lead to the City Zero (0) | 2023.06.23 |
|---|---|
| [Leetcode] 1143. Longest Common Subsequence (0) | 2023.06.22 |
| [LeetCode] 450. Delete Node in a BST (0) | 2023.06.20 |
| [Leetcode] 2542. Maximum Subsequence Score (0) | 2023.06.18 |
| [Leetcode] 43. Multiply Strings (0) | 2023.05.28 |