以下に、シンプルで簡単な方法といくつかのコード例を示します。
- シンプルな方法: スライディングウィンドウのサイズを指定し、ウィンドウ内の要素を比較して最大値を見つける方法です。以下はPythonのコード例です。
def sliding_window_max(nums, k):
result = []
window = nums[:k]
result.append(max(window))
for i in range(k, len(nums)):
window.pop(0)
window.append(nums[i])
result.append(max(window))
return result
# 使用例
nums = [1, 3, -1, -3, 5, 3, 6, 7]
k = 3
max_values = sliding_window_max(nums, k)
print(max_values) # 出力: [3, 3, 5, 5, 5, 6, 7]
- collectionsモジュールのdequeを使用する方法:
collections
モジュールのdeque
を使うと、スライディングウィンドウの操作がより効率的になります。以下はPythonのコード例です。
from collections import deque
def sliding_window_max(nums, k):
result = []
window = deque(nums[:k])
result.append(max(window))
for i in range(k, len(nums)):
window.popleft()
window.append(nums[i])
result.append(max(window))
return result
# 使用例
nums = [1, 3, -1, -3, 5, 3, 6, 7]
k = 3
max_values = sliding_window_max(nums, k)
print(max_values) # 出力: [3, 3, 5, 5, 5, 6, 7]