📌  相关文章
📜  使用给定数字的位数获得第k个最小数字

📅  最后修改于: 2021-05-04 12:17:16             🧑  作者: Mango

给定一个非负数n和一个值k 。找出可以使用给定数字n的数字形成的第k个最小数字。确保可以形成第k个最小的数字。请注意,该数字可能非常大,甚至可能不适合long long int。

例子:

Input : n = 1234, k = 2
Output : 1243

Input : n = 36012679802, k = 4
Output : 10022366897

这个想法是首先对数字排序并找到最小的数字,然后从最小的数字开始找到第k个排列。为了对数字进行排序,我们使用频率计数技术,因为数字的数量很小。

// C++ implementation to get the kth smallest
// number using the digits of the given number
#include 
using namespace std;
  
// function to get the smallest digit in 'num'
// which is greater than 0
char getSmallDgtGreaterThanZero(string num, int n)
{
    // 's_dgt' to store the smallest digit
    // greater than 0
        char s_dgt = '9';
      
    for (int i=0; i

输出:

10022366897