LeetCode 面试题 17.09. 第 k 个数

Posted Tisfy

tags:

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

【LetMeFly】面试题 17.09.第 k 个数

力扣题目链接:https://leetcode.cn/problems/get-kth-magic-number-lcci/

有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。

示例 1:

输入: k = 5

输出: 9

方法一:取最小

这道题和LeetCode 264. 丑数 II 几乎相同

具体方法可参考我在LeetCode 264. 丑数 II写的题解:https://leetcode.letmefly.xyz/2022/09/13/LeetCode 0264.丑数II

方法完全相同,用三个指针每次确定出一个最小值,哪个小就将哪个“入队”(加入候选)

  • 时间复杂度 O ( n ) O(n) O(n)
  • 空间复杂度 O ( n ) O(n) O(n)

AC代码

C++

class Solution 
public:
    int getKthMagicNumber(int k) 
        int loc3 = 0, loc5 = 0, loc7 = 0;
        vector<int> v = 1;
        while (--k) 
            int result3 = v[loc3] * 3;
            int result5 = v[loc5] * 5;
            int result7 = v[loc7] * 7;
            int m = min(result3, min(result5, result7));
            v.push_back(m);
            if (result3 == m) 
                loc3++;
            
            if (result5 == m) 
                loc5++;
            
            if (result7 == m) 
                loc7++;
            
        
        return v.back();
    
;

同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/127087237

以上是关于LeetCode 面试题 17.09. 第 k 个数的主要内容,如果未能解决你的问题,请参考以下文章

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

面试题 17.09. 第 k 个数

LeetCode 面试题02.02. 返回倒数第k个节点

leetcode-235面试题 02.02. 返回倒数第 k 个节点

面试题 17.09. 第 k 个数

LeetCode 面试题22. 链表中倒数第k个节点