算法 - 合并两个有序数组为一个有序数组

题目:有aList和bList两个有序的整数数组,将其合并为一个cList。
如:ListaList = {1,3,5,7,9};
ListbList = {2,4,6,8,10};
合并之后,cList为{1,2,3,4,5,6,7,8,9,10}.

背景:这是算法面试中常见的题目,笔者面试经历中快手和昆仑万维,都出的是这个题。

难点:在写比较逻辑时,要考虑到a、b两个数组长度不等的情况
算法实现如下:

    private List combineSortedLists(ListaList,ListbList){
        if(aList == null || aList.isEmpty()){
            return bList;
        }
        if(bList == null || bList.isEmpty()){
            return aList;
        }

        int cSize = aList.size()+bList.size();
        List cList = new ArrayList(cSize);
        int i = 0;
        int j = 0;
        for(int t = 0;tif(i >= aList.size()){
                cList.add(bList.get(j++));
            } else if(j >= bList.size()){
                cList.add(aList.get(i++));
            } else {
                if (aList.get(i) <= bList.get(j)) {
                    cList.add(aList.get(i++));
                } else {
                    cList.add(bList.get(j++));
                }
            }
            Log.e("algo","t:"+t+";cList[t]:"+cList.get(t));
        }
        return cList;
    }

你可能感兴趣的:(算法)