给定两个数组,要求用这些数字组成一个长度为k的最大的数字,要求两个数组内的数字顺序不变。
枚举两个数组各处多少个数字,第一个数组出i个,第二个数组就出k-i个,然后取出的这两个数字本身就要最大。因为如果不是最大,那我换成最大的填到最终的数字中一定更大。
单个数组求去掉一定数字能得到的最大数字比较简单,用一个栈来维护,只要还能删掉数字并且准备入栈的数字比栈顶数字要大,那就将栈顶数字出栈。
两个数组的最大数字求得后,只需要用归并操作将两个数字合并就可以,不过要注意的是,如果两个队列顶的数字相同时,需要比较两个剩下的数组谁比较大,将较大的那个队列头归并。
C++ Code
1 | class Solution { |