[剑指offer]面试题第[49]题[Leetcode][第264题][JAVA][丑数][动态规划][堆]
生活随笔
收集整理的這篇文章主要介紹了
[剑指offer]面试题第[49]题[Leetcode][第264题][JAVA][丑数][动态规划][堆]
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
【問題描述】[中等]
【解答思路】
1. 動(dòng)態(tài)規(guī)劃
時(shí)間復(fù)雜度:O(N) 空間復(fù)雜度:O(N)
2. 堆
時(shí)間復(fù)雜度:O(N) 空間復(fù)雜度:O(1)
class Solution {public int nthUglyNumber(int n) {PriorityQueue<Long> pq = new PriorityQueue<>();Set<Long> s = new HashSet<>();//初始化,放進(jìn)堆和set,發(fā)現(xiàn)1要開Long數(shù)組才可以long[] primes = new long[]{2, 3, 5};for (long prime : primes) {pq.offer(prime);s.add(prime);}long num = 1;for (int i = 1; i < n; i++) {num = pq.poll();//遍歷三個(gè)因子for (int j = 0; j < 3; j++) {if (!s.contains(num * primes[j])) {pq.offer(num * primes[j]);s.add(num * primes[j]);}}}return (int) num;} }作者:jerry_nju 鏈接:https://leetcode-cn.com/problems/chou-shu-lcof/solution/dui-he-dong-tai-gui-hua-si-lu-xiang-jie-by-jerry_n/【總結(jié)】
1.動(dòng)態(tài)規(guī)劃流程
第 1 步:設(shè)計(jì)狀態(tài)
第 2 步:狀態(tài)轉(zhuǎn)移方程
第 3 步:考慮初始化
第 4 步:考慮輸出
第 5 步:考慮是否可以狀態(tài)壓縮
2.優(yōu)先隊(duì)列 按大小彈出 溢出問題long 去重set
參考鏈接:
https://leetcode-cn.com/problems/chou-shu-lcof/solution/dui-he-dong-tai-gui-hua-si-lu-xiang-jie-by-jerry_n/
參考鏈接:https://leetcode-cn.com/problems/chou-shu-lcof/solution/mian-shi-ti-49-chou-shu-dong-tai-gui-hua-qing-xi-t/
總結(jié)
以上是生活随笔為你收集整理的[剑指offer]面试题第[49]题[Leetcode][第264题][JAVA][丑数][动态规划][堆]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sprint会议记录
- 下一篇: MangoDB的基本操作