LeetCode 239. 滑動(dòng)窗口大值
題目描述:給你一個(gè)整數(shù)數(shù)組 nums,有一個(gè)大小為?k?的滑動(dòng)窗口從數(shù)組的最左側(cè)移動(dòng)到數(shù)組的最右側(cè)。你只可以看到在滑動(dòng)窗口內(nèi)的 k?個(gè)數(shù)字?;瑒?dòng)窗口每次只向右移動(dòng)一位。返回 滑動(dòng)窗口中的大值 。
視頻講解https://www.bilibili.com/video/BV1XS4y1p7qj/?vd_source=f98f2942b3c4cafea8907a325fc56a48文章講解
https://programmercarl.com/0239.%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E6%9C%80%E5%A4%A7%E5%80%BC.html
class Solution {
private:
// 單調(diào)隊(duì)列(從大到小)
class MyQueue {
public:
// 用deque來實(shí)現(xiàn)
dequeque;
// 每次彈出的時(shí)候,比較當(dāng)前要彈出的數(shù)值是否等于隊(duì)列出口元素的數(shù)值,如果相等則彈出。
// 同時(shí)pop之前判斷隊(duì)列當(dāng)前是否為空。
void pop(int val) {
if (!que.empty() && val == que.front()) {
que.pop_front();
}
}
// 如果push的數(shù)值大于入口元素的數(shù)值,那么就將隊(duì)列后端的數(shù)值彈出,直到push的數(shù)值小于等于隊(duì)列入口元素的數(shù)值為止。
// 這樣就保持了隊(duì)列里的數(shù)值是單調(diào)從大到小的了。
void push(int val) {
while (!que.empty() && que.back()< val ) {
que.pop_back();
}
que.push_back(val);
}
// 查詢當(dāng)前隊(duì)列里的大值 直接返回隊(duì)列前端也就是front就可以了。
int getMax() {
return que.front();
}
};
public:
vectormaxSlidingWindow(vector& nums, int k) {
MyQueue que;
// 滑動(dòng)窗口大值序列
vectorresult;
// 先將前k的元素放進(jìn)隊(duì)列
for (int i = 0; i< k; ++i) {
que.push(nums[i]);
}
result.push_back(que.getMax());
// 移動(dòng)滑動(dòng)窗口
for (int i = k; i< nums.size(); ++i) {
que.pop(nums[i - k]);
que.push(nums[i]);
result.push_back(que.getMax());
}
return result;
}
};
LeetCode 347.前 K 個(gè)高頻元素
題目描述:給定一個(gè)非空的整數(shù)數(shù)組 nums,返回其中出現(xiàn)頻率前 k 高的元素。
視頻講解https://www.bilibili.com/video/BV1Xg41167Lz文章講解
https://programmercarl.com/0347.%E5%89%8DK%E4%B8%AA%E9%AB%98%E9%A2%91%E5%85%83%E7%B4%A0.html
// 時(shí)間復(fù)雜度:O(nlogk)
// 空間復(fù)雜度:O(n)
class Solution {
public:
// 小頂堆
class mycomparison {
public:
bool operator()(const pair& lhs, const pair& rhs) {
// 頻率低的優(yōu)先級(jí)高
return lhs.second >rhs.second;
}
};
vectortopKFrequent(vector& nums, int k) {
// 要統(tǒng)計(jì)元素出現(xiàn)頻率
unordered_mapmap; // mapfor (int i = 0; i< nums.size(); i++) {
map[nums[i]]++;
}
// 對(duì)頻率排序
// 定義一個(gè)小頂堆,大小為k
priority_queue, vector>, mycomparison>pri_que;
// 用固定大小為k的小頂堆,掃面所有頻率的數(shù)值
for (unordered_map::iterator it = map.begin(); it != map.end(); it++) {
pri_que.push(*it);
if (pri_que.size() >k) { // 如果堆的大小大于了K,則隊(duì)列彈出,保證堆的大小一直為k
pri_que.pop();
}
}
// 找出前K個(gè)高頻元素,因?yàn)樾№敹严葟棾龅氖亲钚〉模缘剐騺磔敵龅綌?shù)組
vectorresult(k);
for (int i = k - 1; i >= 0; i--) {
result[i] = pri_que.top().first;
pri_que.pop();
}
return result;
}
};
總結(jié)
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
分享題目:代碼隨想錄算法訓(xùn)練營第十三天-創(chuàng)新互聯(lián)
新聞來源:http://chinadenli.net/article48/dgcchp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、全網(wǎng)營銷推廣、搜索引擎優(yōu)化、網(wǎng)站營銷、品牌網(wǎng)站設(shè)計(jì)、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容