PHP剔除数字求最小值

题目背景】题目是:假设正整数n、s,s<n。设计算法对任一给定n位数,删除其中的s位后,使得剩下的位组成的新数最小。

例如:n = 6,s = 3,如果组成的6位数字是783259,那么删除3位数字后,那么剔除3位后最小的数字应该是259。再比如,n = 5,s = 2,如果组成的5位数字是24351,那么剔除2位的最小数字是231。

【解题算法】这里给出的是使用贪心法解决这个问题。至于其他算法,希望大家集思广益,给出更好的解法额所谓贪心法:在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。

【解题思路】我们把n位的数字放到数组中,使用循环剔除不符合要求的数字。每次循环总是将一个使剩下的数最小的数字剔除,即按高位到低位的顺序搜索,若各位数字递增,则删除最后一个数字,否则删除第一个递减区间的首字符。

【解题代码】查看代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值