小算法求思路

zly361814478 2012-10-01 11:43:21
、有两个集合,A集合内容为:{1、2、3、4},B集合内容为:{1、2、5、6},两个集合的对称差定义为A Δ B = (A − B) ∪(B − A),上述A、B两集合的对称差为{3、4、5、6}。编写一个程序,用散列集求两个集合A、B的对称差集合,即求 (A − B) ∪(B − A),
...全文
101 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zly361814478 2012-10-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

你要的是思路,我给了思路,结果一分都没有!!!
[/Quote] 我错了 不好意思~~~><
liangtu 2012-10-02
  • 打赏
  • 举报
回复
你要的是思路,我给了思路,结果一分都没有!!!
raistlic 2012-10-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
、有两个集合,A集合内容为:{1、2、3、4},B集合内容为:{1、2、5、6},两个集合的对称差定义为A Δ B = (A − B) ∪(B − A),上述A、B两集合的对称差为{3、4、5、6}。编写一个程序,用散列集求两个集合A、B的对称差集合,即求 (A − B) ∪(B − A),
[/Quote]

Mourinho 2012-10-01
  • 打赏
  • 举报
回复

import java.util.ArrayList;
import java.util.HashSet;


public class Test {
public static void main(String[] args){
//init
ArrayList<Integer> a1 = new ArrayList<Integer>();
ArrayList<Integer> a2 = new ArrayList<Integer>();
int[] arr1 = new int[]{1,2,3,4};
int[] arr2 = new int[]{1,2,5,6};
for(int i = 0;i < arr1.length;++i) a1.add(arr1[i]);
for(int i = 0;i < arr2.length;++i) a2.add(arr2[i]);
//get result
ArrayList<Integer> result = findResult(a1, a2);
System.out.println(result.toString());
}


private static ArrayList<Integer> findResult(ArrayList<Integer> a1,ArrayList<Integer> a2){
@SuppressWarnings("unchecked")
ArrayList<Integer> result = (ArrayList<Integer>) a1.clone();
result.removeAll(a2);
a2.removeAll(a1);
result.addAll(a2);
return result;
}
}

liangtu 2012-10-01
  • 打赏
  • 举报
回复
对称差就是把两个集合中不同的元素找出来,
1、找出A中有B中没有的元素
2、找出B中有A中没有的元素
3、把1和2合并

只要把equals的条件设定好,这个没什么难度
zly361814478 2012-10-01
  • 打赏
  • 举报
回复


恩,这个就可以了[Quote=引用 2 楼 的回复:]

Java code

import java.util.ArrayList;
import java.util.HashSet;


public class Test {
public static void main(String[] args){
//init
ArrayList<Integer> a1 = new ArrayList<Intege……
[/Quote]
raistlic 2012-10-01
  • 打赏
  • 举报
回复


public static void main(String[] args) {

Set<Integer> a = new HashSet<Integer>();
a.addAll(Arrays.asList(1, 2, 3, 4));
Set<Integer> b = new HashSet<Integer>();
b.addAll(Arrays.asList(1, 2, 5, 6));

System.out.println(symmetricDiff(a, b));
}

static <E> Set<E> symmetricDiff(Set<E> a, Set<E> b) {

assert a != null;
assert b != null;

Set<E> result = new HashSet<E>(a);
result.addAll(b);

for(E i : a)
if( b.contains(i) )
result.remove(i);
return result;
}

精选微软等数据结构+算法面试100题答案修正V0.2版本 -------------------- 此份答案是针对,前期已公布的最初的那份答案的,初步校正与修正。 http://download.csdn.net/source/2796735(V0.1版) 相比第一份V0.1版答案,此份答案V0.2版更加准确,亦修正了不少题目的答案。 此份20题的答案,思路更加清晰易懂,简介明了。 请享用。July、2010/11/06。 其它资源,下载地址: 1.[最新答案V0.3版]微软等数据结构+算法面试100题[第21-40题答案] http://download.csdn.net/source/2832862 2.[第1题-60题汇总]微软等数据结构+算法面试100题 http://download.csdn.net/source/2826690 3.[答案V0.2版]精选微软数据结构+算法面试100题[前20题]--修正 http://download.csdn.net/source/2813890 //此份答案是针对最初的V0.1版本,进行的校正与修正。 4.[答案V0.1版]精选微软数据结构+算法面试100题[前25题] http://download.csdn.net/source/2796735 5.[第二部分]精选微软等公司结构+算法面试100题[前41-60题]: http://download.csdn.net/source/2811703 6.[第一部分]精选微软等公司数据结构+算法经典面试100题[1-40题] http://download.csdn.net/source/2778852 更多资源,下载地址: http://v_july_v.download.csdn.net/ ------------------------------------------------------ 各位,若对以上100题任何一道,或对已上传的任何一题的答案, 有任何问题,请把你的思路、想法,回复到此帖子上, 微软等100题系列,永久维护地址(2010年11.26日): http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧