class Solution:
def getAverages(self, nums: List[int], k: int) -> List[int]:
n = len(nums)
d = (k * 2) + 1
ans = [-1 for _ in range(n)]
if n >= d:
s = sum(nums[:d])
else:
return ans
for i in range(k, n - k):
if i != k:
s -= nums[i - k - 1]
s += nums[i + k]
ans[i] = int(s/d)
return ans
class Solution:
def getAverages(self, nums: List[int], k: int) -> List[int]:
if k == 0:
return nums
n = len(nums)
averages = [-1] * n
if 2 * k + 1 > n:
return averages
prefix = [0] * (n + 1)
for i in range(n):
prefix[i + 1] = prefix[i] + nums[i]
for i in range(k, n - k):
leftBound, rightBound = i - k, i + k
subArraySum = prefix[rightBound + 1] - prefix[leftBound]
average = subArraySum // (2 * k + 1)
averages[i] = average
return averages
class Solution:
def getAverages(self, nums: List[int], k: int) -> List[int]:
averages = [-1] * len(nums)
if k == 0:
return nums
n = len(nums)
if 2 * k + 1 > n:
return averages
window_sum = sum(nums[:2 * k + 1])
averages[k] = window_sum // (2 * k + 1)
for i in range(2 * k + 1, n):
window_sum = window_sum - nums[i - (2 * k + 1)] + nums[i]
averages[i - k] = window_sum // (2 * k + 1)
return averages
정수 부분만 취하는 거라면 나누기 후 int를 씌울 필요 없이 그냥 몫만 구했으면 됐다,, 왜 저렇게 했지
좀 더 깔끔한 코드를 짜는 연습을 하자! 굳이 for문 안에 조건 분기를 넣을 필요가 없었다