Skip to content

Commit ce73b9b

Browse files
committed
D. J.:
- Added the leetcode problem and solution for 643
1 parent 736201c commit ce73b9b

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@
239239
- [518 Coin Change II](https://leetcode.com/problems/coin-change-ii/description/)
240240
- [530 Minimum Absolute Difference in BST](https://leetcode.com/problems/minimum-absolute-difference-in-bst/description/)
241241
- [637 Average of Levels in Binary Tree](https://leetcode.com/problems/average-of-levels-in-binary-tree/description/)
242+
- [643 Maximum Average Subarray I](https://leetcode.com/problems/maximum-average-subarray-i/description/)
242243
- [646 Maximum Length of Pair Chain](https://leetcode.com/problems/maximum-length-of-pair-chain/description/)
243244
- [673 Number of Longest Increasing Subsequence](https://leetcode.com/problems/number-of-longest-increasing-subsequence/description/)
244245
- [712 Minimum ASCII Delete Sum for Two Strings](https://leetcode.com/problems/minimum-ascii-delete-sum-for-two-strings/description/)
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from typing import List
2+
3+
4+
class Solution:
5+
"""Base class for all LeetCode Problems."""
6+
7+
def findMaxAverage(self, nums: List[int], k: int) -> float:
8+
"""
9+
You are given an integer array nums consisting of n elements, and an integer k.
10+
11+
Find a contiguous subarray whose length is equal to k that has the maximum
12+
average value and return this value. Any answer with a calculation error less
13+
than 10-5 will be accepted.
14+
"""
15+
max_average = nums[0]
16+
average = nums[0]
17+
for left in range(len(nums) - k + 1):
18+
if left:
19+
average = average - nums[left - 1] + nums[left + k - 1]
20+
max_average = max(max_average, average)
21+
else:
22+
average = sum(nums[left : left + k])
23+
max_average = sum(nums[left : left + k])
24+
return max_average / k
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from typing import List
2+
3+
import pytest
4+
5+
from awesome_python_leetcode._643_maximum_average_subarray_I import Solution
6+
7+
8+
@pytest.mark.parametrize(
9+
argnames=["nums", "k", "expected"],
10+
argvalues=[
11+
([1, 12, -5, -6, 50, 3], 4, 12.75),
12+
([5], 1, 5.0),
13+
],
14+
)
15+
def test_func(nums: List[int], k: int, expected: float):
16+
"""Tests the solution of a LeetCode problem."""
17+
max_average = Solution().findMaxAverage(nums, k)
18+
assert max_average == expected

0 commit comments

Comments
 (0)