序號滑動視窗類題目
1滑動視窗的最大值
2實現最大值佇列
3和為s的連續正數序列
4最長不含重複字元的子字串(滑動視窗)
題目1 滑動視窗的最大值
標準的滑動視窗解法!!!!!
class solution
for ( int i = 0 ; i < nums.size(); i++ ) // 對每個位置進行入視窗的操作
window.push_back( i );
// 每次檢查視窗最前面的元素是否過期
if ( window.front() <= i - k )
// 視窗大小儲存元素
if ( i >= k-1 )
}return ans;
}};
自己的做法
class solution
int cur_max = nums[0];
// 把初始視窗填上, 求得當前視窗最值, 註冊
int m = k <= ( nums.size()) ? k :nums.size();
for(int i = 0 ; i < m ; i ++)
ans.push_back(cur_max);
// 視窗大小要是比陣列size大,就不用滑動了
if ( k >= nums.size())
// 從 k 位置開始滑動,前端出乙個,後端進乙個
for (int i = k; i < nums.size() ; i ++ )
// ②如果 out 的 數字 剛好是當前最大值
// 分為兩種情況
// a--> in 的值比 out 的值 大 或相等
// b--> in 的值比 out 小 , 那就只能在佇列裡遍歷求新的最大值了
else if (out == cur_max)
else}}
ans.push_back(cur_max);
}return ans;
}};
題目2 - ii. 佇列的最大值
請定義乙個佇列並實現函式 max_value 得到佇列裡的最大值,要求函式max_value、push_back 和 pop_front 的時間複雜度都是o(1)。
若隊列為空,pop_front 和 max_value 需要返回 -1
示例 1:
輸入:["maxqueue","push_back","push_back","max_value","pop_front","max_value"]
[,[1],[2],,,]
輸出: [null,null,null,2,1,2]
示例 2:
輸入:["maxqueue","pop_front","max_value"]
[,,]
輸出: [null,-1,-1]
class maxqueue
// 直接返回最大值視窗的front()
int max_value() else
}// 從後面插入-> 修改基本佇列 和 最大值視窗
void push_back( int value )
window.push_back(value);
}// 從前端彈出-->
int pop_front()
return ans;
}};/**
* your maxqueue object will be instantiated and called as such:
* maxqueue* obj = new maxqueue();
* int param_1 = obj->max_value();
* obj->push_back(value);
* int param_3 = obj->pop_front();
*/
題目3 和為s的連續正數序列(滑動視窗)
輸入乙個正整數 target ,輸出所有和為 target 的連續正整數序列(至少含有兩個數)。
序列內的數字由小到大排列,不同序列按照首個數字從小到大排列。
示例 1:
輸入:target = 9
輸出:[[2,3,4],[4,5]]
示例 2:
輸入:target = 15
輸出:[[1,2,3,4,5],[4,5,6],[7,8]]
class solution
if ( sum == target )
ans.push_back(tmp);
tmp.clear();}}
return ans;
}};
題目4 最長不含重複字元的子字串(滑動視窗)
請從字串中找出乙個最長的不包含重複字元的子字串,計算該最長子字串的長度.
示例 1:
輸入: "abcabcbb"
輸出: 3
解釋: 因為無重複字元的最長子串是 "abc",所以其長度為 3。
示例 2:
輸入: "bbbbb"
輸出: 1
解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。
示例 3:
輸入: "pwwkew"
輸出: 3
解釋: 因為無重複字元的最長子串是 "wke",所以其長度為 3。
請注意,你的答案必須是 子串 的長度,"pwke" 是乙個子串行,不是子串。
class solution
dequewindow;
setst;
int ans = 0 ;
for ( int i = 0 ; i < s.size() ; i ++ ) // 每個位置的字串入佇列
else if ( st.count(s[i]) )
window.pop_front();
window.push_back(s[i]);
st.insert(s[i]);}}
return ans;
}};
C 單調佇列與單調棧 滑動視窗題解
現在有一堆數字共n個數字 n 10 6 以及乙個大小為k的視窗。現在這個從左邊開始向右滑動,每次滑動乙個單位,求出每次滑動後視窗中的最大值和最小值。例如 the array is 1 3 1 3 5 3 6 7 and k 3.第1行 2個整數n,k k n 1000000 第2行 n個整數,表示陣...
演算法 使用單調佇列解決滑動視窗問題
給定乙個大小為n 106的陣列。有乙個大小為k的滑動視窗,它從陣列的最左邊移動到最右邊。您只能在視窗中看到k個數字。每次滑動視窗向右移動乙個位置。以下是乙個例子 該陣列為 1 3 1 3 5 3 6 7 k為3。視窗位置 最小值最大值 1 3 1 3 5 3 6 7 13 1 3 1 3 5 3 6...
C3 彈性盒子2
align self 用於設定彈性元素自身在側軸 縱軸 方向上的對齊方式。align self屬性取值 auto 如果 align self 的值為 auto 則其計算值為元素的父元素的 align items 值,如果其沒有父元素,則計算值為 stretch flex start 彈性盒子元素的側...