【发布时间】:2015-06-16 08:49:11
【问题描述】:
问题:给定一个n位数,应该删除其中的k(k
解决方案:删除大于或等于其右邻居的第一个数字(从左到右),或者如果我们找不到这样的数字,则删除最后一个数字。重复此过程k 次。 (参考codecareer。还有geeksforgeeks、stackoverflow等其他解决方案,但我觉得这里描述的更直观,所以我更喜欢这个。)
现在的问题是,如何证明上面的解决方案是正确的,即如何在每一步删除一个数字后使其最小,从而保证最终的数字是最小的。
【问题讨论】:
-
允许在左边的数字前导零。例如删除‘1028’中的一位,左边的数字是‘028’。