LeetCode 面试题 17.09 第k个数[动态规划] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 面试题 17.09 第k个数[动态规划] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。

解题思路:
题目比较难懂,其实就是按从小到大顺序输出满足因子只有3,5,7中一个或几个的数,定义动态规划数组,以及三个指针,三个指针分别指向当前要和3,5,7相乘的数的下标,不断更新即可,最后返回最后一个数,代码如下:

class Solution 
public:
    int getKthMagicNumber(int k) 
        int point3 = 0;
        int point5 = 0;
        int point7 = 0;
        vector<int> res(k, 1);
        for(int i = 1; i < k; i ++) 
            int result = min(res[point3] * 3, min(res[point5] * 5, res[point7] * 7));
            // 更新下标,防止重复
            if(result % 3 == 0) 
                point3 ++;
            
            if(result % 5 == 0) 
                point5 ++;
            
            if(result % 7 == 0) 
                point7 ++;
            
            res[i] = result;
        
        return res[k - 1];
    
;

以上是关于LeetCode 面试题 17.09 第k个数[动态规划] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 面试题 17.09. 第 k 个数

⭐算法入门⭐《堆》中等01 —— LeetCode 面试题 17.09. 第 k 个数

面试题 17.09. 第 k 个数 :「优先队列」&「多路归并」

面试题 17.09. 第 k 个数

Leetcode刷题100天—面试题 17.14. 最小K个数(优先队列)—day27

Leetcode刷题100天—面试题 17.14. 最小K个数(优先队列)—day27