Re: [问题] 关于比对两数列

楼主: bleed1979 (十三)   2014-10-28 23:09:35
※ 引述《sunsam777 (行善为乐)》之铭言:
: 数列一 整数阵列 值 1 2 3 4 5
: 数列二 整数阵列 值 3 5
: 要印出 数列二没有的 1 2 4
: 请问该如何做呢?
: 我能想到的大概就是用两个for循环
: 大概这样,俩俩互相比对,共比10次 但要怎样才能印出1 2 4呢
: 想了很久想不出来,可否指点下? 感谢不尽
不晓得题目的数列内容就是如此,还是经过原po转换。
假设数列1有m个,数列2有n个:
时间复杂度一定是O(n)或O(m)以上的,因为至少要loop其中一个数列。
现在关心的是循环内的search.
每每loop一次肯定是最慢的,
有排序用binary search,没排序或怕重复可以建tree或丢到Map,
数字范围小的,开1000万以上的阵列也可。
端看数列的长度和组成。大概是这样。
作者: mars90226 (火星人)   2014-10-28 23:14:00
有排序的只要O(max(m,n))不需要search,用两个index从数列前端往后走相同值就不理,两个都+1。不同值,小的index+1,塞进结果里面,这样就可以走遍两个数列好像应该是O(m+n)
楼主: bleed1979 (十三)   2014-10-28 23:26:00
是的。但前提是两个数列皆排序过。

Links booklink

Contact Us: admin [ a t ] ucptt.com