Back to Home

ការរុករកអតិបរមាបង្អួចរង្វិល

ក្បួនដោះស្រាយសម្រាប់រកតម្លៃអតិបរមានៃបង្អួចទំហំ k ក្នុងអារេ។ វាធ្វើឱ្យប្រសើរឡើងពីការរុករកលីនេអ៊ែរ។

Visualization

Step 1 / 8
Speed:

Details

Analogy

ស្រមៃថាអ្នកកំពុងមើលសីតុណ្ហភាពប្រចាំថ្ងៃក្នុងសប្តាហ៍។ អ្នកចង់ដឹងថាសីតុណ្ហភាពខ្ពស់បំផុតក្នុងបង្អួច 3 ថ្ងៃណាមួយ។ អ្នកអាចរកអតិបរមានៃបង្អួច 3 ថ្ងៃដោយមើលតម្លៃខ្ពស់បំផុតក្នុងបង្អួចនីមួយៗ។

Purpose

ដើម្បីរកតម្លៃអតិបរមានៃបង្អួចទំហំ k ក្នុងអារេដោយប្រើ queue ឬ deque ដើម្បីរកអតិបរមាបានលឿន។

Use Cases

ប្រើសម្រាប់វិភាគសំណុំទិន្នន័យធំៗដែលត្រូវការរកអតិបរមានៅក្នុងបង្អួចរង្វិល ដូចជា តម្លៃភាគហ៊ុន ទិន្នន័យសិនស័រ និង signal analysis។

Algorithm Steps

Line 1
1
create empty deque and result array
2
for i = 0 to n-1:
3
remove indices outside window from front
4
while deque not empty and arr[deque.back] < arr[i]:
5
remove from back
6
add i to deque back
7
if i >= k-1:
8
append arr[deque.front] to result
9
return result
Current
Executed
Pending

Explanation

What's Happening?

Step 1/8

អារេដំបូង: [1, 3, -1, -3, 5, 3, 6, 7], k = 3។

Updates with each step • Clickfor full view

Code Implementation

from collections import deque

def max_sliding_window(nums, k):
    result = []
    dq = deque()
    for i, n in enumerate(nums):
        if dq and dq[0] == i - k:
            dq.popleft()
        while dq and nums[dq[-1]] < n:
            dq.pop()
        dq.append(i)
        if i >= k - 1:
            result.append(nums[dq[0]])
    return result
ការរុករកអតិបរមាបង្អួចរង្វិល - Interactive Visualization | AlgoViz | AlgoViz