题目描述:
给出一个整数,从该整数中去掉k个数字,要求剩下的数字形成的新整数尽可能小,应该怎么做。
整体思路:首先,可以将从该整数中去掉k个数字,转换成执行k次从该整数中去掉1个数字的子问题。
而从该整数中去掉1个数字使新整数尽可能最小意味着:应尽可能地让新整数的最高位最小,如果最高位最小值为原整数最高位本身,则依次向后执行,直到已经有一个数字被去掉。
求解过程:从原整数第一位开始,与后面一位比较。如果前面的数大,则意味着,去掉前面的数字,最高位变成后面相对较小的数字,从而使得该整数去掉一位之后新整数最小;如果前面的数字小,则让第二位与第三位比较,依然按照之前的思路进行。
注意:之所以从最高位开始,而不是从所有位中找出最大的去掉,是因为最高位在整数中所占的权重最大,对整数的大小的影响远远高于比它低的位。因此,应该先去掉相对较高位的数字。