丑數-優先隊列/三指針/動態規劃

丑數

在這里插入圖片描述

Solution

核心思路:
在這里插入圖片描述

注意的幾個點:
1.優先隊列改變排序:

priority_queue<int,vector<int>,greater<int>> q;

2.用來判斷是否訪問過,可以用unordered_set
注意set的插入用的是insert而不是push

unordered_set<long long> vis;
#include<iostream>
#include<vector>
#include<algorithm>
#include<queue>//使用優先隊列priority_queue導入queue就行了
#include<unordered_map>
#include<unordered_set>
using namespace std;//優先隊列寫法
int nthUglyNumber1(int n) {priority_queue<long long,vector<long long>,greater<long long>> q;//unordered_map<long long, long long> vis;unordered_set<long long> vis;q.push(1);long long x;for (int i = 1; i <= n; ++i) {x = q.top();q.pop();long long x2 = x * 2;long long x3 = x * 3;long long x5 = x * 5;if (!vis.count(x2)) { q.push(x2); vis.insert(x2); }if (!vis.count(x3)) { q.push(x3); vis.insert(x3); }if (!vis.count(x5)) { q.push(x5); vis.insert(x5); }}return x;
}//動態規劃+三指針寫法
//題目的本質目的,是從前面得到的數中,每個數乘2,3,5,然后求從小到大的第n個數
//由于需要從小到大,可以使用三個指針依次指向當前乘以2,3,5的數,選取其中最小的為丑數,并將指針向后移動一個
int nthUglyNumber2(int n) {int p2 = 1, p3 = 1, p5 = 1;vector<long long> dp(n + 1, 1);for (int i = 2; i <= n; ++i) {long long x2 = dp[p2] * 2;long long x3 = dp[p3] * 3;long long x5 = dp[p5] * 5;long long ugly = min(min(x2, x3), x5);if (ugly == x2) p2++;if (ugly == x3) p3++;if (ugly == x5) p5++;dp[i] = ugly;}return dp[n];
}
int main() {return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/94018.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/94018.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/94018.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FPGA(或者數字電路)中組合邏輯和時序邏輯是怎么劃分的

1.組合邏輯 在FPGA中&#xff0c;組合邏輯是哪些沒有觸發器作為存儲單元的電路 LUT查找表就是組合邏輯電路&#xff0c;無時鐘信號參與。 加法器&#xff0c;邏輯門&#xff0c;多路選擇器&#xff0c;譯碼器2.時序邏輯電路 輸出依賴于當前輸入&#xff0c;還依賴于過去 觸發器…

【音視頻】WebRTC 中的RTP、RTCP、SDP、Candidate

一、RTP 1.1 RTP協議介紹 在 WebRTC 中&#xff0c;RTP&#xff08;Real-time Transport Protocol&#xff0c;實時傳輸協議&#xff09;是音視頻媒體數據傳輸的核心協議&#xff0c;負責實時數據的封裝、傳輸與解封裝&#xff0c;為實時交互提供時序、同步、分片重組等關鍵能…

accept函數及示例

這次我們介紹 accept 函數&#xff0c;它是 TCP 服務器用來接受客戶端連接請求的核心系統調用。1. 函數介紹 accept 是一個 Linux 系統調用&#xff0c;專門用于TCP 服務器&#xff08;使用 SOCK_STREAM 套接字&#xff09;。它的主要功能是從監聽套接字&#xff08;通過 liste…

【Java】在一個前臺界面中動態展示多個數據表的字段及數據

企業的生產環境中&#xff0c;如果不允許直接操作數據表中的數據&#xff0c;則需要開發一個前臺界面&#xff0c;在必要時實現對多個數據表中數據的增刪改查&#xff0c; 此時就需要后端將Oracle表字段及數據查詢返回前端動態展示…… 一、Oracle特定元數據查詢 使用JDBC獲取O…

MySQL(174)如何理解MySQL的多版本并發控制(MVCC)?

MySQL的多版本并發控制&#xff08;MVCC, Multi-Version Concurrency Control&#xff09;是一種用于實現高并發性的機制&#xff0c;它允許多個事務同時讀取和寫入數據&#xff0c;而不會相互阻塞。MVCC主要在InnoDB存儲引擎中實現&#xff0c;通過維護數據的多個版本來實現一…

Docker--將非root用戶添加docker用戶組,解決頻繁sudo執行輸入密碼的問題

一、為什么要有docker用戶組&#xff1f; 根本原因&#xff1a; Linux的設備訪問權限控制機制 Docker守護進程&#xff08;dockerd&#xff09;運行時會創建一個特殊的Unix套接字文件&#xff0c;如&#xff1a;/var/run/docker.sock。 這個文件就像一個“門”&#xff0c;所有…

C語言---函數的遞歸與迭代

遞歸的理解與限制條件 所謂函數遞歸就是遞推加回歸的過程&#xff0c;就是函數自己調用自己。遞歸的思想就是把復雜的問題拆分成與原來那個大問題相似的子問題來求解&#xff0c;大事化小&#xff0c;像剝洋蔥一樣&#xff0c;最終把問題解決。 遞歸的限制條件&#xff1a; 一個…

freqtrade在docker運行一個dryrun實例

檢查配置 freqtrade trade --config user_data/config.json --strategy MlStrategy config文件,這個配置做期貨為主&#xff0c;靜態配置了交易對&#xff0c;同時端口和第一個bot要不一樣&#xff0c;不然沒有辦法進行監控&#xff0c;甚至要沖突了。10S鐘進行循環&#xff0c…

單片機學習筆記.PWM

PWM原理&#xff1a; 頻率占空比&#xff1a;精度占空比變化步距 電機驅動電路&#xff1a;利用PWM實現呼吸燈代碼 sbit LEDP2^0;//引腳定義unsigned char Time,i;//變量定義void Delay(unsigned int t)//定義延時 {while(t--); }main函數里&#xff1a;int main() {unsigned c…

【Git】解決使用SSH連接遠程倉庫時需要多次輸入密碼的問題

問題產生的原因&#xff1a;你的SSH私鑰設置了密碼短語&#xff08;passphrase&#xff09;。解決問題的方法&#xff1a;使用SSH代理&#xff08;ssh-agent&#xff09;&#xff0c;ssh-agent是一個后臺運行程序&#xff0c;它會記住你解鎖過的SSH私鑰的密碼短語&#xff0c;這…

機器學習—邏輯回歸

一介紹邏輯回歸是處理二分類問題的線性模型&#xff0c;通過sigmoid函數將線性輸出映射到[0,1]&#xff0c;輸出事件發生概率&#xff0c;廣泛用于預測與分類。如果做坐標的話&#xff0c;特征就是p1和p2&#xff0c;結果就是y紅的與綠的 二Sigma函數代碼說明Sigmoid 函數定義&…

深入解讀OpenTelemetry分布式鏈路追蹤:原理與實踐指南

深入解讀OpenTelemetry分布式鏈路追蹤&#xff1a;原理與實踐指南 分布式系統在微服務架構下&#xff0c;服務調用鏈越來越復雜&#xff0c;追蹤單次請求在各個微服務之間的執行情況成為運維與性能優化的關鍵。作為新一代開源標準&#xff0c;OpenTelemetry為分布式追蹤、指標與…

【0基礎PS】PS工具詳解--圖案圖章工具

目錄前言一、圖案圖章工具基礎認知?二、工具選項欄參數詳解?三、圖案圖章工具應用案例?總結前言 在 Adobe Photoshop 這一強大的圖像處理軟件中&#xff0c;圖案圖章工具是一個獨具特色的功能&#xff0c;它允許用戶利用預先定義好的圖案進行繪畫操作。 一、圖案圖章工具基…

劇本殺小程序系統開發:構建數字化劇本殺生態圈

在快節奏的現代生活中&#xff0c;人們越來越渴望在閑暇之余找到一種既能放松心情又能增進社交的方式。劇本殺&#xff0c;作為一種集推理、表演、社交于一體的新興娛樂形式&#xff0c;恰好滿足了這一需求。然而&#xff0c;隨著市場的不斷擴大&#xff0c;如何保持劇本殺的新…

【DL學習筆記】計算圖與自動求導

計算圖計算圖&#xff08;Computation Graph&#xff09;是一種用于描述計算過程的圖形化表示方法。在深度學習中&#xff0c;計算圖通常用于描述 網絡結構、運算過程 和數據流向。計算圖是一種有向無環圖&#xff0c;用圖形方式來表示算子與變量之間的關系&#xff0c;直觀高效…

大型地面光伏電站開發建設流程

?地面電站特特點&#xff1a;規模大&#xff0c;通常占用土地、水面等&#xff0c;地面式選址選項多&#xff0c;且不斷拓展出新的用地模式&#xff0c;地面式選址集中在山體、灘涂、沼澤、戈壁、沙漠、受污染土地等閑置或廢棄土地上。

除數博弈(動態規劃)

愛麗絲和鮑勃一起玩游戲&#xff0c;他們輪流行動。愛麗絲先手開局。最初&#xff0c;黑板上有一個數字 n 。在每個玩家的回合&#xff0c;玩家需要執行以下操作&#xff1a;選出任一 x&#xff0c;滿足 0 < x < n 且 n % x 0 。用 n - x 替換黑板上的數字 n 。如果玩家…

一起學springAI系列一:初體驗

Spring AI是干嘛的官網最權威&#xff0c;直接粘貼&#xff1a;“Spring AI”項目旨在簡化那些包含人工智能功能的應用程序的開發過程&#xff0c;同時避免不必要的復雜性。AI相關領域的功能對python的支持是最好的&#xff0c;相關供應商在出了啥功能的時候&#xff0c;都會優…

Ext JS極速項目之 Coworkee

ExtJS Coworkee 是什么? Ext JS 的 Coworkee 是一個由 Sencha 官方提供的完整員工管理應用示例,旨在展示 Ext JS 框架在企業級應用開發中的能力。 在線試用的地址是: https://examples.sencha.com/coworkee/#home 頁面效果與布局 登錄頁面: 主頁效果 左右分區結構:左…

飛算科技:原創技術重塑 Java 開發,引領行業數智化新浪潮

在科技革新的浪潮中&#xff0c;飛算科技作為一家堅持自主創新的數字科技企業&#xff0c;同時也是國家級高新技術企業&#xff0c;正深耕互聯網科技、大數據、人工智能等前沿領域&#xff0c;為眾多企業的數字化與智能化轉型提供強勁動力。?飛算科技的成長軌跡&#xff0c;是…