首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

很基础的求两个有序数组的交加和并集

2012-06-30 
很基础的求两个有序数组的交集和并集? /*** 求解两个有序数组的交集* @param a* @param b* @return*/publi

很基础的求两个有序数组的交集和并集

?

 /**     * 求解两个有序数组的交集     * @param a     * @param b     * @return     */    public static List<Integer> join(int[] a , int[] b){        List<Integer> list = new LinkedList<Integer>();        int ai = 0;        int bi = 0;        while(ai < a.length && bi < b.length){            if(a[ai] == b[bi]){                //两个相等即交集                list.add(a[ai]);                ai++;                bi++;            }            else if(a[ai] > b[bi]){               //移动小得数组index               bi++;            }            else{                //移动小值得数组index               ai ++;            }        }        return list;    }    /**     * 求解两个有序数组的并集     * @param a     * @param b     * @return     */    public static List<Integer> merge(int[] a , int[] b){        List<Integer> list = new LinkedList<Integer>();        int ai = 0;        int bi = 0;        while(ai < a.length && bi < b.length){            if(a[ai] < b[bi]){                list.add(a[ai]);                ai++;            }            else if(a[ai] > b[bi]){                list.add(b[bi]);                bi++;            }            else {                list.add(a[ai]);                ai++;bi++;            }        }        //剩余的直接插入到结果集的末尾        if(ai < a.length){            for(;ai < a.length ; ai++){               list.add(a[ai]);            }        }        else if(bi < b.length){            for(;bi < b.length ; bi++){               list.add(b[bi]);            }        }        return list;    }
?

热点排行