删数问题 算法分析 ACM 贪心算法 Descr iption 对于一个有 n 个数字的正整数 a, 去掉其中任意 k (≤ n) 个数字后, 剩下的数字按原次序排列组成一个新的正整数. 本题对于给定的正整数 a, 请计算删去 k 个数字后得到的最小数. Input 有多个测试用例. 每个测试用例的第一行是一个正整数 a, 第二行是正整数 k, 表示要从 a 中删除 k 个数字. 输入直到没有数据为止. Output 对于每个测试用例, 在一行上输出得到的最小数. Sample Input 1
第一种思路,把两个数组合为一个数组然后再排序,问题又回归到冒泡和快排了,没有用到两个数组的有序性。(不好)
第二种思路,循环比较两个有序数组头位元素的大小,并把头元素放到新数组中,从老数组中删掉,直到其中一个数组长度为0。然后再把不为空的老数组中剩下的部分加到新数组的结尾。(好)
第二种思路的排序算法与测试代码如下:
def merge_sort(a, b):
ret = []
while len(a)>0 and len(b)>0:
if a[0] <= b