两个有序数组的交集和并集

两个有序数组的交集和并集。

Intersection of two sorted array. (find the common elements between two sorted arrays)

Follow up:

找出两个有序数组里不同的数字(类似求集合的异或)

这是Facebook的电面题。

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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值