最近又要开始找工作了,打算每天做一道算法题,为面试准备
两个有序数组合并为一个有序数组
例如: a = [1,3,5,6] b = [2,5,8]
合并结果 c = [1,2,3,5,5,6,8]
我用java来实现一下我的思路
public class Sort {
public static void main(String[] args) {
List<Integer> s = new ArrayList<>();
int[] l1 = new int[]{1,3,5,6};
int[] l2 = new int[]{2,5,8};
int i = 0;
int j = 0;
while (true){
if(s.size() >= l1.length + l2.length){
break;
}
if(i < l1.length) {
if(j >= l2.length){
for(int n = i; n < l1.length; n++){
s.add(l1[n]);
}
}else{
if (l1[i] < l2[j]) {
s.add(l1[i]);
i++;
continue;
}
}
}
if(j < l2.length) {
if(i >= l1.length){
for(int n = j; n < l2.length; n++){
s.add(l2[n]);
}
}else{
if (l1[i] > l2[j]) {
s.add(l2[j]);
j++;
continue;
}
}
}
if(i < l1.length && j < l2.length){
if(l1[i] == l2[j]){
s.add(l2[j]);
s.add(l1[i]);
i++;
j++;
continue;
}
}
}
s.forEach(f-> System.out.println(f));
}
}
附上运行结果
如果你有更好的解法,可以给我留言