flashdream8 发表于 2013-2-4 22:04:11

求有序整数集合a和b的交集函数

问题描述:
有两个有序整数集合a和b,写一个函数找出它们的交集?
几种解决方案:
一:

import java.util.Arrays; public class Test {   public static void main(String args[]){         int[] b = {4, 6, 7, 7, 7, 7, 8, 8, 9, 10, 100, 130, 130, 140, 150};         int[] a = {2, 3, 4, 4, 4, 4, 7, 8, 8, 8, 8, 9, 100, 130, 150, 160};         int[] c = intersect(a, b);         System.out.println(Arrays.toString(c));   }   public static int[] intersect(int[] a, int[] b) {         if(a > b || b > a) {             return new int;         }         int[] intersection = new int;         int offset = 0;         for(int i = 0, s = i; i < a.length && s < b.length; i++) {             while(a > b) {               s++;             }             if(a == b) {               intersection = b;             }             while(i < (a.length - 1) && a == a) {               i++;             }         }         if(intersection.length == offset) {             return intersection;         }         int[] duplicate = new int;         System.arraycopy(intersection, 0, duplicate, 0, offset);         return duplicate;   } }  


import java.util.ArrayList; public class jiaoji {   public static void main(String[] args) {         // TODO Auto-generated method stub         int[] b = { 4, 6, 7, 7, 7, 8, 8, 9, 10, 100, 130, 140, 150 };         int[] a = { 2, 3, 4, 4, 4, 7, 8, 8, 8, 8, 9, 100, 130, 150, 160 };         ArrayList c = sect(a, b);         for (int i = 0; i < c.size(); i++) {             System.out.print(c.get(i) + ",");         }   }   public static ArrayList sect(int[] a, int[] b) {         int k = 0;         int startposb = 0;         if (a > b || b > a) {             return new ArrayList();         }         ArrayList arraylist = new ArrayList();         for (int i = 0; i < a.length; i++) {             for (int j = startposb; j < b.length; j++) {               if (a == b) {                     arraylist.add(k, a);                     k++;                     startposb = j + 1;                     break;               }             }         }         return arraylist;   } }  
 


import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class NumberCross {   public static void main(String[] args) {         int a[] = {1,3,4,5,6,7,499,199};         int b[] = {3,299,199,8,9,499};         Set<Integer> list = new HashSet<Integer>();         for(int i=0; i<a.length; i++) {             list.add(a);         }         for(int j=0; j<b.length; j++) {             list.add(b);         }         for(Iterator<Integer> iter=list.iterator(); iter.hasNext();) {             System.out.print(iter.next() + " ");         }   } } 
页: [1]
查看完整版本: 求有序整数集合a和b的交集函数