算法优化

冰上浮云 2017-06-20 10:08:20
有两个数组A[m],B[n];其中B是A的一个子集,从A中取出B的所有元素,并保持所有元素在A中的顺序。
例如:
A[10]=[3,9,0,5,4,8,2,7,1,6]
B[3]=[1,8,5]
输出:
C[3]=[5,8,1]

给出你认为效率最高的算法。

时间复杂度降到O(m*n)以下。

...全文
323 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
angel6709 2017-07-03
  • 打赏
  • 举报
回复
时间复杂度应该为M+lnN
angel6709 2017-07-03
  • 打赏
  • 举报
回复
引用 1 楼 Tiger_Zhao 的回复:
先把B[] 排序,那么判断 A[i] 是否存在 B[] 中可以用二分查找法。 整体复杂度就将为 O(M*logN)
应该是把A排序,并记录原来的index
leeky 2017-06-27
  • 打赏
  • 举报
回复
楼主自己的算法是啥?不然优化如何说起?
Tiger_Zhao 2017-06-27
  • 打赏
  • 举报
回复
先把B[] 排序,那么判断 A[i] 是否存在 B[] 中可以用二分查找法。 整体复杂度就将为 O(M*logN)

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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