给定正数N ,目标是找到从N中删除任何K位数字后可形成的最大数。
例子:
Input: N = 6358, K = 1
Output: 658
Input: N = 2589, K = 2
Output: 89
方法:
- 循环K次。
- 在每次迭代期间,从N的当前值中除去每个数字一次,并存储所获得的所有数字的最大值。
- 为了实现这一点,我们存储(N /(i * 10))* i +(N%i)的最大值,其中i的范围为[1,10 l – 1 ] ,其中l表示当前值的位数的N。
- 将此最大值视为N的当前值,然后进行下一个迭代并重复上述步骤。
- 因此,在每次迭代之后,我们从N的当前值中删除了最少的位数。将过程重复K次后,我们获得了尽可能多的数目。
例如:
Let us analyze this approach for N = 6358, K = 1
The different possibilities after removal of every digit once are as follows:
(6358 / 10) * 1 + 6358 % 1 = 635 + 0 = 635
(6358 / 100) * 10 + 6358 % 10 = 630 + 8 = 638
(6358 / 1000) * 100 + 6358 % 100 = 600 + 58 = 658
(6358 / 10000) * 1000 + 6358 % 1000 = 0 + 358 = 358
下面是上述方法的实现:
C++
Java
Python3
C#
输出: