给定两个排序整数数组A和B,将B合并为A作为一个排序数组。
注意:您必须修改数组A,以包含A和B的合并。不要在代码中输出任何内容。提示:C用户,请将结果malloc到一个新的数组中并返回结果。
如果A和B中初始化的元素数分别为m和n,则代码执行后数组A的结果大小应为m+n
Input :
A : [1 5 8]
B : [6 9]
Modified A : [1 5 6 8 9]
public class Solution {
public void merge(ArrayList<Integer> a, ArrayList<Integer> b) {
int i=0,j=0;
ArrayList<Integer> al= new ArrayList<Integer>();
while(i<a.size() && j<b.size()){
if(a.get(i)<b.get(j)){
al.add(a.get(i));
i++;
}
else{
al.add(b.get(j));
j++;
}
}
while(i<a.size()){
al.add(a.get(i));
i++;
}
while(j<b.size()){
al.add(b.get(j));
j++;
}
}
public static void ensureSize(ArrayList<Integer> list, int size){
list.ensureCapacity(size);
while(list.size()<size){
list.add(null);
}
}
ensureSize(a,al.size());
for(int k=0;k<al.size();k++){
a.set(k,al.get(k));
}
因为两个给定的数组已经排序
投入:A:[1 5 8]B:[6 9]
修改A:[1 5 6 8 9]
public static int[] merge(int[] a, int[] b) {
int[] answer = new int[a.length + b.length];
int i = 0, j = 0, k = 0;
while (i < a.length && j < b.length)
{
if (a[i] < b[j])
answer[k++] = a[i++];
else
answer[k++] = b[j++];
}
while (i < a.length)
answer[k++] = a[i++];
while (j < b.length)
answer[k++] = b[j++];
return answer;
}
public static int[] merge(int[] a, int[] b) {
int[] answer = new int[a.length + b.length]
int i = a.length - 1, j = b.length - 1, k = answer.length;
while (k > 0)
answer[--k] =
(j < 0 || (i >= 0 && a[i] >= b[j])) ? a[i--] : b[j--];
}
public static <T> ArrayList<T> merge(List<T> a, List<T> b) {
ArrayList<T> result = new ArrayList<T>();
int size = Math.max(a.size(), b.size());
for (int i = 0; i < size; i++) {
if (i < a.size()) result.add(a.get(i));
if (i < b.size()) result.add(b.get(i));
}
return result;
}
List<Integer> all = new ArrayList<Integer>();
all.addAll(list1);
all.addAll(list2);
Collections.sort(all);
最后一个算法适用于最初不按排序顺序排列的数组,我不认为您正在寻找,但它是一个选项。
如何执行选项:3:
public static void main(String[] args){
List<Integer> l1 = Arrays.asList(1,5,7,9);
List<Integer> l2 = Arrays.asList(4,3,11);
System.out.println(merge(l1,l2));
}
据我所知,您还希望将新的ArrayList
与第一个ArrayList
合并,并删除任何重复项,我将执行如下操作:
for (Object x : two){
if (!one.contains(x))
one.add(x);
}
我有一个名为TwoNumbers的类,它创建一个包含两个数字的对象。我创建了一个包含此对象的ArrayList<>,并希望将这些对象复制到新的ArrayList中。 问题是我只想将不同的对象复制到新的ArrayList中。当对象内部的数字可能相同时,Java将每个对象视为不同的对象,我不知道如何阻止它复制每个对象。 我的TwoNumber类:公共TwoNumbers(int n1,int n2)
我必须找到一个最好的方法来找出第二个arraylist中没有出现的元素。认为 所以基本上我想要的是找出a的元素,它不存在于arraylist b中。 那么,最好的解决方案是什么?
问题内容: 我对Java编程还是很陌生,我正在尝试使用以下代码来更新an的现有值: 我想打印而不是打印,但得到的结果仍然是。我要打印。我怎样才能做到这一点?谢谢。 问题答案: 使用该方法将旧值替换为新值。
问题内容: 如何轻松检查一个ArrayList中的所有元素是否都是另一ArrayList的所有元素? 问题答案: 使用Collection.containsAll():
viewgridobject.java