很基础的求两个有序数组的交集和并集
?
/** * 求解两个有序数组的交集 * @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; }?