我在面试后端 Java 开发人员角色时被问到这个问题。
输入:
arr1 = {3,1,8,10,9,7};
arr2 = {6,4,5,2};
输出:
arr1 = [1,2,3,4,5,6]
arr2 = [7,8,9,10]
注意事项:
我将两个数组中的所有元素按原样添加到名为“list”的列表中(未排序),然后使用流对列表进行升序排序。
list = list.stream()
.sorted((n1, n2) -> n1-n2)
.collect(Collectors.toList());
然后使用下面的代码根据列表中的元素的大小将列表中的元素添加回数组。
for(int i=0; i<arr1.length; i++) {
arr1[i] = list.get(i);
}
for(int i=0; i<arr2.length; i++) {
arr2[i] = list.get(i + arr1.length);
}
这不是一个令人满意的解决方案。 可以做什么:
Arrays.sort(arr1);
Arrays.sort(arr2);
然后使用
Arrays.binarySearch
和 System.arraycopy
合并两个数组,并可能再次对一个数组进行排序。
我把这份快乐留给了你。
该解决方案将是“原位”,就地,无需额外的内存。然后,该任务还需要一些实际的编程,合并两个数组。