交集:
用兩個指標分別指向兩個陣列的頭部。如果其中乙個元素比另乙個小,後移小的那個陣列的指標;如果相等,那麼把該元素新增到交集裡,同時後移兩個陣列的指標。一直這樣操作下去,直到有乙個指標超過陣列範圍。
public list intersection(int a, int b)else
}return result;
}
並集:
用兩個「指標」分別指向兩個陣列的頭部。如果其中乙個陣列的元素比另乙個小,把該元素新增到並集裡,後移小的那個陣列的指標;如果相等,那麼把該元素新增到並集裡,同時後移兩個陣列的指標。一直這樣操作下去,直到有乙個指標超過陣列範圍。將兩個陣列中沒有遍歷完的那個陣列的其餘元素全部新增進並集裡。
public list union(int a, int b)else
}while(i時間複雜度:
o(n)=o(m+n) //m為第乙個陣列的長度,n為第二個陣列的長度
交集:
①建立乙個雜湊表(hashmap),其鍵(key)表示集合中數字的值,其值(value)表示集合中數字出現的次數
②遍歷集合a,將集合中的每個數字(key)插入雜湊表,每個數字的出現次數(value)設定為1
③遍歷集合b,對於集合中的每個數字:
如果雜湊表中已經存在該數字,將對應的value改為2
如果雜湊表中不存在該數字,忽略
④遍歷雜湊表,輸出value為2的數字,即得到a和b的交集
public list intersection(int a, int b)
}return result;
}
並集:
①建立乙個雜湊集(hashset)
②遍歷集合a,將集合中的每個數字(key)插入雜湊集
③遍歷集合b,對於集合中的每個數字:
如果雜湊集中已經存在該數字,忽略
如果雜湊集中不存在該數字,將這個數字插入雜湊集
④遍歷雜湊集,即為a和b的並集
public hashset union(int a, int b){
hashsetset=new hashset<>();
for(int i=0;i時間複雜度:
o(n)=o(max(m,n)) //m為第乙個陣列的長度,n為第二個陣列的長度
求兩個List的交集和並集
最近遇到的面試題,假設有兩個list分別為list1和list2 交集 list1.retainall list2 list1的資料就變成list1和list2的交集,list2不變。public class listtest system.out.println for int i 0 i lis...
python 兩個list 求交集,並集,差集
在python中,陣列可以用list來表示。如果有兩個陣列,分別要求交集,並集與差集,怎麼實現比較方便呢?當然最容易想到的是對兩個陣列做迴圈,即寫兩個for迴圈來實現。這種寫法大部分同學應該都會,而且也沒有太多的技術含量,本博主就不解釋了。這裡給大家使用更為裝bility的一些方法。老規矩,talk...
Linux 兩個檔案求交集 並集 差集
sort a.txt b.txt uniq dsort a.txt b.txt uniq在 a.txt 檔案 現,不在 b.txt 檔案 現 sort a.txt b.txt b.txt uniq u在 b.txt 檔案 現,不在 a.txt 檔案 現 sort b.txt a.txt a.txt ...