leetcode刷題之239 滑動視窗的最大值

2021-10-25 18:00:16 字數 840 閱讀 4537

正確的解法是使用雙端佇列來處理這個window的功能。

c++ deque有現成的stl可以使用

需要注意幾個點

1. 需要維護佇列內部的最大值在隊首的位置,每次想要新增乙個新元素的時候就迴圈和前面的元素做比較

2. 判斷乙個元素是否過期,可以直接用當前隊首和應該淘汰的數字進行對比如果一致就去除

主要邏輯:

1. 如果該資料小於新加入的資料,再上一步就應該被清除所以不需要考慮過期的問題

2. 如果當前的資料大於新加入的資料,但是又恰好等於i -k這個位置的資料,那麼在確定最大值之前就需要將它清理出來

/*

* * [239] 滑動視窗最大值

* 使用deque雙端佇列的方法來解決,效率比較低

*/// @lc code=start

class solution ;

vectorret;

dequewindow;

window.push_front(nums[0]);

for (int i = 1; i < nums.size() ; i++)

window.push_back(nums[i]);

//window front用來判斷是否是過期的資料,如果有重複資料也應該被前面迴圈所去除

if (i >= k && window.front() == nums[i - k])

if (i >= k - 1)

}

return ret;

}};// @lc code=end

deque的效能確實不怎麼的,如果可以還是用資料效率比較高,但是容器就是勝在了方便

leetcode刷題筆記239

這是一道hard的題目,但是我覺得沒有想象的那麼難,大概在中等難度,主要是要搞清楚一些東西,譬如優先順序佇列等,還有一點比較重要的需要搞清楚,我會在下邊提及,這道題不僅僅是讓我學到演算法,也讓我重視起對於stl的使用。給你乙個整數陣列 nums,有乙個大小為 k 的滑動視窗從陣列的最左側移動到陣列的...

Leetcode Python 刷題技巧之滑動視窗

總結 示例 pandas 是基於numpy 的一種工具,該工具是為了解決資料分析任務而建立的。如下 示例 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns impo...

Leetcode刷題之括號

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5 輸入 輸...