計算兩個陣列的差集

2021-08-18 22:02:19 字數 477 閱讀 9972

給你兩個分別有 5000 個元素的陣列,計算他們的差集

方案1迴圈第乙個陣列 ,判斷item是否在第二個陣列裡,如果在,則unset掉這個鍵,最後剩下的陣列就是差集

function array_diff($array_1, $array_2) 

}return $array_1;

}

方案2 (最優 效率最快)

將第二個陣列進行鍵值反轉,迴圈遍歷第乙個陣列,用item當做key 判斷陣列2中是否存在,存在則unset掉陣列1的這個key,最後剩下的陣列就是差集

function array_diff($array_1, $array_2) 

}return $array_1;

}

方案2比方案1的速度快的原因:因為鍵是進行 hash 組織的,查詢很快;而 value 只是由 key 組織存放,本身沒有索引,每次查詢都是遍歷。

用Linq取兩個陣列的差集

兩個陣列,取其差集,用linq做比較方便,效率也比較高,具體如下示例 有兩個陣列list1 和list2 如下 listlist1 new list list1.add 1 list1.add 2 list1.add 3 listlist2 new list list2.add 1 list2.ad...

交換兩個陣列使兩個陣列和的差最小

有兩個陣列a,b,大小都為n,陣列元素的值任意整形數,無序 要求 通過交換a,b中的元素,使 陣列a元素的和 與 陣列b元素的和 之間的差最小。求解思路 當前陣列a和陣列b的和之差為 a sum a sum b a的第i個元素和b的第j個元素交換後,a和b的和之差為 a sum a a i b j ...

交換兩個陣列使兩個陣列和的差最小

有兩個陣列a,b,大小都為n,陣列元素的值任意整形數,無序 要求 通過交換a,b中的元素,使 陣列a元素的和 與 陣列b元素的和 之間的差最小。求解思路 當前陣列a和陣列b的和之差為 a sum a sum b a的第i個元素和b的第j個元素交換後,a和b的和之差為 a sum a a i b j ...