班门弄斧一下。
我的思路是可以在Linear时间内解决,先假定有N个Array,而且在每个Array中没有重
复的元素;
1. 做一个Hashmap,以Array[i]为Key,以该array[i]数值在全部N个Array中出现的次
数为Value;再做一个OutArray。
2. 从0到N-1遍历每个Array的每个数值,如果Hashmap里有这个数,则把
修正为.如果表里没这个数值,直接存。
3. 全部Array的全部元素都遍历结束后,任取一个Array0,就取第一个吧,遍历此
Array0,如果某个值array0[j],对应在hashmap里的Value是N-1的话,就说明这个数在
每个Array里都出现过,把这个数存到最终输出的数组OutArray里。
4. 输出OutArray;
=========
以下为简化的思路,无论单个数组里有无重复都可以用。
同样假定N个数组,同样初始化HashMap和OutArray;
1. 先把Array0里的数值放到HashMap里,Value全部设为1;
2. 从1到N-2遍历前面的N-2个数组;
对于第m个数组来讲,如果HashMap里没这个值,直接扔掉;如果ArrayM里的某个数
在HashMap里对应的Value为0或者小于m-1,扔掉这个值,如果对应的Value为m-1,则把该
Value修正为m+1,
3. 遍历最后一个数组;如果任意数值在Hashmap里对应该数的Value为N-1,则把该数值
存放到OutArray里,否则Check下一个数值。
4. 输出OutArray。
======
熬夜写作业,没有写Code验证,也不知我的思路有没有错误,见谅。