字符数组a[n]和b[m],n>m>10000,请将a中有而b中没有的元素保存到数组C,注意效率问题。

number1170196649 2012-11-04 07:39:21
这是今天的一道笔试题。
...全文
186 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Prairial_0 2012-11-04
  • 打赏
  • 举报
回复
(字符数组?) hash判重可以有,特别是m,n差别很大的时候
number1170196649 2012-11-04
  • 打赏
  • 举报
回复
引用 3 楼 turingo 的回复:
1、把b中的元素排序; 2、依次取出a中的元素,用折半查找在b中是否存在,然后保存到c中。
嗯,怎么没有想到折半查找。在考试中想的就是不够周到。
number1170196649 2012-11-04
  • 打赏
  • 举报
回复
引用 4 楼 JiMoKuangXiangQu 的回复:
用一个bitmap数组,每个bit代表一个数: 首先遍历数组a,遇到一个数就将相应的位置置1; 再遍历数组b,遇到一个数就将相应的位置清零; 最后遍历bitmap数组,遇到1就往c数组里面存一个数. 大概思路就是这样了.
这个思路不错哦。
number1170196649 2012-11-04
  • 打赏
  • 举报
回复
引用 1 楼 I_FU_LE_YOU11 的回复:
个人觉得,可以先进行分别排序,经排序后顺序直接查找,不知道还有没有更好的方法
我的思路就是这样。还有高效的算法吗?
JiMoKuangXiangQu 2012-11-04
  • 打赏
  • 举报
回复
用一个bitmap数组,每个bit代表一个数: 首先遍历数组a,遇到一个数就将相应的位置置1; 再遍历数组b,遇到一个数就将相应的位置清零; 最后遍历bitmap数组,遇到1就往c数组里面存一个数. 大概思路就是这样了.
图灵狗 2012-11-04
  • 打赏
  • 举报
回复
1、把b中的元素排序; 2、依次取出a中的元素,用折半查找在b中是否存在,然后保存到c中。
JiMoKuangXiangQu 2012-11-04
  • 打赏
  • 举报
回复
用bitmap. 参考<<编程珠玑>>.
qin_pp 2012-11-04
  • 打赏
  • 举报
回复
个人觉得,可以先进行分别排序,经排序后顺序直接查找,不知道还有没有更好的方法

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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