每日一题:两个有序数组合并为一个有序数组(附答案)

80 阅读1分钟

最近又要开始找工作了,打算每天做一道算法题,为面试准备

两个有序数组合并为一个有序数组
例如: 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));
    }
}

附上运行结果

image.png

如果你有更好的解法,可以给我留言