π‘ΠΠ°Π΄Π°ΡΠ° "ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ°Π·Π΄Π²ΠΈΠΆΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ"
@javascriptvΠ£ΡΠ»ΠΎΠ²ΠΈΠ΅: Π΄Π°Π½ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ k ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Π°, Π½Π°ΡΠΈΠ½Π°ΡΡΠ΅Π³ΠΎΡΡ ΠΎΡ Π»Π΅Π²ΠΎΠΉ Π³ΡΠ°Π½ΠΈΡΡ, ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΠ΅Π³ΠΎΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Ρ ΠΏΡΠ°Π²ΠΎΠΉ Π³ΡΠ°Π½ΠΈΡΡ. ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°Π³Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ k ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΊΠΎΠ»ΡΠ·ΡΡΠ΅Π³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°Π³Π΅ Π½Π°Π΄ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΠ»ΡΠ·ΡΡΠ΅Π³ΠΎ.
ΠΡΠΈΠΌΠ΅Ρ:
ΠΠ²ΠΎΠ΄: nums = [1,3,-1,-3,5,3,6,7], k = 3
ΠΡΠ²ΠΎΠ΄: [3,3,5,5,6,7]
ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅:
Π‘ΠΊΠΎΠ»ΡΠ·ΡΡΠ΅Π΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈΒ Β Max
--------------------------Β Β -----
[1Β 3Β -1] -3Β 5Β 3Β 6Β 7 Β Β Β 3
Β 1 [3Β -1Β -3] 5Β 3Β 6Β 7 Β Β Β 3
Β 1Β 3 [-1Β -3Β 5] 3Β 6Β 7Β Β Β Β 5
Β 1Β 3Β -1 [-3Β 5Β 3] 6Β 7 Β Β Β 5
Β 1Β 3Β -1Β -3 [5Β 3Β 6] 7 Β Β Β 6
Β 1Β 3Β -1Β -3Β 5 [3Β 6Β 7]Β Β Β 7
ΠΠ²ΠΎΠ΄: nums = [1], k = 1
ΠΡΠ²ΠΎΠ΄: [1]
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
ΠΠΎΠ΄Ρ
ΠΎΠ΄
ΠΡΠ΅ΡΠ΅Π΄Ρ Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ - ΡΠ΄Π°Π»ΡΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π΄Π»ΠΈΠ½Π° ΠΎΠΊΠ½Π° Π½Π΅ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠ°
ΠΠΎΠ½ΠΎΡΠΎΠ½Π½Π°Ρ ΠΎΡΠ΅ΡΠ΅Π΄Ρ - ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠ΅ ΡΠ»Π΅Π²Π°, ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΏΡΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π½Π°ΠΏΡΠ°Π²ΠΎ
ΠΠΎΠ΄:
1
var maxSlidingWindow = function (a, wLen) {
let n = a.length,
pq = new PriorityQueue({
compare: (a, b) => b[1] - a[1] || b[0] - a[0],
}),
ans = [];
for (let R = 0; R < n; R++) {
pq.enqueue([R, a[R]]);
if (R < wLen - 1) continue;
while (pq.front()[0] <= R - wLen) {
pq.dequeue();
}
ans.push(pq.front()[1]);
}
return ans;
};
2
var maxSlidingWindow = function (a, wLen) {
let n = a.length,
q = [],
ans = [];
for (let R = 0; R < n; R++) {
while (q.length && a[R] >= q[q.length - 1][1]) {
q.pop();
}
q.push([R, a[R]]);
if (R < wLen - 1) continue;
while (q[0][0] <= R - wLen) {
q.shift();
}
ans.push(q[0][1]);
}
return ans;
};