Skip to content

Commit fd779b2

Browse files
committed
feat: add solutions to lc problem: No.2090
No.2090.K Radius Subarray Averages
1 parent 5e04121 commit fd779b2

File tree

6 files changed

+188
-7
lines changed

6 files changed

+188
-7
lines changed

solution/2000-2099/2090.K Radius Subarray Averages/README.md

+67-3
Original file line numberDiff line numberDiff line change
@@ -70,22 +70,47 @@
7070

7171
<!-- 这里可写通用的实现逻辑 -->
7272

73+
前缀和。
74+
7375
<!-- tabs:start -->
7476

7577
### **Python3**
7678

7779
<!-- 这里可写当前语言的特殊实现逻辑 -->
7880

7981
```python
80-
82+
class Solution:
83+
def getAverages(self, nums: List[int], k: int) -> List[int]:
84+
n = len(nums)
85+
presum = [0] * (n + 1)
86+
for i in range(n):
87+
presum[i + 1] = presum[i] + nums[i]
88+
return [-1 if i - k < 0 or i + k >= n else (presum[i + k + 1] - presum[i - k]) // (k * 2 + 1) for i in range(n)]
8189
```
8290

8391
### **Java**
8492

8593
<!-- 这里可写当前语言的特殊实现逻辑 -->
8694

8795
```java
88-
96+
class Solution {
97+
public int[] getAverages(int[] nums, int k) {
98+
int n = nums.length;
99+
long[] presum = new long[n + 1];
100+
for (int i = 0; i < n; ++i) {
101+
presum[i + 1] = presum[i] + nums[i];
102+
}
103+
int[] ans = new int[n];
104+
for (int i = 0; i < n; ++i) {
105+
if (i - k < 0 || i + k >= n) {
106+
ans[i] = -1;
107+
} else {
108+
ans[i] = (int) ((presum[i + k + 1] - presum[i - k]) / (k * 2 + 1));
109+
}
110+
}
111+
return ans;
112+
}
113+
}
89114
```
90115

91116
### **TypeScript**
@@ -99,7 +124,7 @@ function getAverages(nums: number[], k: number): number[] {
99124
for (let i = 0; i < n; i++) {
100125
sum += nums[i];
101126
let shiftIndex = i - l;
102-
if ( shiftIndex > -1) {
127+
if (shiftIndex > -1) {
103128
sum -= nums[shiftIndex];
104129
}
105130
if (i + 1 >= l) {
@@ -110,6 +135,45 @@ function getAverages(nums: number[], k: number): number[] {
110135
};
111136
```
112137

138+
### **C++**
139+
140+
```cpp
141+
class Solution {
142+
public:
143+
vector<int> getAverages(vector<int>& nums, int k) {
144+
int n = nums.size();
145+
vector<long long> presum(n + 1);
146+
for (int i = 0; i < n; ++i) presum[i + 1] = presum[i] + nums[i];
147+
vector<int> ans;
148+
for (int i = 0; i < n; ++i)
149+
if (i - k < 0 || i + k >= n) ans.push_back(-1);
150+
else ans.push_back((presum[i + k + 1] - presum[i - k]) * 1ll / (k * 2 + 1));
151+
return ans;
152+
}
153+
};
154+
```
155+
156+
### **Go**
157+
158+
```go
159+
func getAverages(nums []int, k int) []int {
160+
n := len(nums)
161+
presum := make([]int64, n+1)
162+
for i, num := range nums {
163+
presum[i+1] = presum[i] + int64(num)
164+
}
165+
var ans []int
166+
for i := 0; i < n; i++ {
167+
if i-k < 0 || i+k >= n {
168+
ans = append(ans, -1)
169+
} else {
170+
ans = append(ans, int((presum[i+k+1]-presum[i-k])/int64(k*2+1)))
171+
}
172+
}
173+
return ans
174+
}
175+
```
176+
113177
### **...**
114178

115179
```

solution/2000-2099/2090.K Radius Subarray Averages/README_EN.md

+67-4
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,39 @@
6666
### **Python3**
6767

6868
```python
69+
class Solution:
70+
def getAverages(self, nums: List[int], k: int) -> List[int]:
71+
n = len(nums)
72+
presum = [0] * (n + 1)
73+
for i in range(n):
74+
presum[i + 1] = presum[i] + nums[i]
75+
return [-1 if i - k < 0 or i + k >= n else (presum[i + k + 1] - presum[i - k]) // (k * 2 + 1) for i in range(n)]
6976

7077
```
7178

79+
### **Java**
80+
81+
```java
82+
class Solution {
83+
public int[] getAverages(int[] nums, int k) {
84+
int n = nums.length;
85+
long[] presum = new long[n + 1];
86+
for (int i = 0; i < n; ++i) {
87+
presum[i + 1] = presum[i] + nums[i];
88+
}
89+
int[] ans = new int[n];
90+
for (int i = 0; i < n; ++i) {
91+
if (i - k < 0 || i + k >= n) {
92+
ans[i] = -1;
93+
} else {
94+
ans[i] = (int) ((presum[i + k + 1] - presum[i - k]) / (k * 2 + 1));
95+
}
96+
}
97+
return ans;
98+
}
99+
}
100+
```
101+
72102
### **TypeScipt*
73103

74104
```ts
@@ -80,7 +110,7 @@ function getAverages(nums: number[], k: number): number[] {
80110
for (let i = 0; i < n; i++) {
81111
sum += nums[i];
82112
let shiftIndex = i - l;
83-
if ( shiftIndex > -1) {
113+
if (shiftIndex > -1) {
84114
sum -= nums[shiftIndex];
85115
}
86116
if (i + 1 >= l) {
@@ -91,10 +121,43 @@ function getAverages(nums: number[], k: number): number[] {
91121
};
92122
```
93123

94-
### **Java**
95-
96-
```java
124+
### **C++**
125+
126+
```cpp
127+
class Solution {
128+
public:
129+
vector<int> getAverages(vector<int>& nums, int k) {
130+
int n = nums.size();
131+
vector<long long> presum(n + 1);
132+
for (int i = 0; i < n; ++i) presum[i + 1] = presum[i] + nums[i];
133+
vector<int> ans;
134+
for (int i = 0; i < n; ++i)
135+
if (i - k < 0 || i + k >= n) ans.push_back(-1);
136+
else ans.push_back((presum[i + k + 1] - presum[i - k]) * 1ll / (k * 2 + 1));
137+
return ans;
138+
}
139+
};
140+
```
97141
142+
### **Go**
143+
144+
```go
145+
func getAverages(nums []int, k int) []int {
146+
n := len(nums)
147+
presum := make([]int64, n+1)
148+
for i, num := range nums {
149+
presum[i+1] = presum[i] + int64(num)
150+
}
151+
var ans []int
152+
for i := 0; i < n; i++ {
153+
if i-k < 0 || i+k >= n {
154+
ans = append(ans, -1)
155+
} else {
156+
ans = append(ans, int((presum[i+k+1]-presum[i-k])/int64(k*2+1)))
157+
}
158+
}
159+
return ans
160+
}
98161
```
99162

100163
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution {
2+
public:
3+
vector<int> getAverages(vector<int>& nums, int k) {
4+
int n = nums.size();
5+
vector<long long> presum(n + 1);
6+
for (int i = 0; i < n; ++i) presum[i + 1] = presum[i] + nums[i];
7+
vector<int> ans;
8+
for (int i = 0; i < n; ++i)
9+
if (i - k < 0 || i + k >= n) ans.push_back(-1);
10+
else ans.push_back((presum[i + k + 1] - presum[i - k]) * 1ll / (k * 2 + 1));
11+
return ans;
12+
}
13+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
func getAverages(nums []int, k int) []int {
2+
n := len(nums)
3+
presum := make([]int64, n+1)
4+
for i, num := range nums {
5+
presum[i+1] = presum[i] + int64(num)
6+
}
7+
var ans []int
8+
for i := 0; i < n; i++ {
9+
if i-k < 0 || i+k >= n {
10+
ans = append(ans, -1)
11+
} else {
12+
ans = append(ans, int((presum[i+k+1]-presum[i-k])/int64(k*2+1)))
13+
}
14+
}
15+
return ans
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
public int[] getAverages(int[] nums, int k) {
3+
int n = nums.length;
4+
long[] presum = new long[n + 1];
5+
for (int i = 0; i < n; ++i) {
6+
presum[i + 1] = presum[i] + nums[i];
7+
}
8+
int[] ans = new int[n];
9+
for (int i = 0; i < n; ++i) {
10+
if (i - k < 0 || i + k >= n) {
11+
ans[i] = -1;
12+
} else {
13+
ans[i] = (int) ((presum[i + k + 1] - presum[i - k]) / (k * 2 + 1));
14+
}
15+
}
16+
return ans;
17+
}
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
class Solution:
2+
def getAverages(self, nums: List[int], k: int) -> List[int]:
3+
n = len(nums)
4+
presum = [0] * (n + 1)
5+
for i in range(n):
6+
presum[i + 1] = presum[i] + nums[i]
7+
return [-1 if i - k < 0 or i + k >= n else (presum[i + k + 1] - presum[i - k]) // (k * 2 + 1) for i in range(n)]

0 commit comments

Comments
 (0)