← 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