如題,筆試一般喜歡考這些問題,給定兩個有序陣列(元素唯一,不重複),如何從中找出相同的元素
php其實已經給我們提供了方法來實現 array_intersect($arr1,$arr2),該方法只比較鍵值,返回鍵值相同的元素
當然筆試也不會考你系統函式呼叫,下面說說思路
很簡單,兩個陣列從下標為0開始比較大小,小的向後取下一位值,如果相等則輸出並將其中乙個取下一位值,直到其中乙個陣列完成一輪完整的遍歷為止
**如下:
public functionfindthesameitems($arr1
,$arr2
)if(
$i ==
$size1
|| $j
== $size2
)break;
}return$re
;}
如果輸入陣列有重複元素,只要用in_array()方法判斷一下是否在結果集中即可,在則繼續,否則加入結果集
如果是無序陣列,我覺得也沒必要先排序再用這個方法了,直接兩層for迴圈比較吧,因為你再排序差不多也是這個複雜度
兩個已排序陣列,找出相同的部分
存在的兩個陣列,已經排好順序,求其相同的部分,有以下幾種求法 1 窮舉法 最原始的方法,時間複雜度為o m n 如下 int a new int 示列陣列 int b new int for int i 0 i a.length i 2 binary search 通過乙個陣列的for迴圈,不斷與另...
歸併兩個有序陣列
題目 有兩個有序的陣列a1和a2,內存在a1的末尾有足夠多的空餘空間容納a2。請實現乙個函式,把a2中的所有數字插入到a1中並且所有的數字是排序的。解法 從後向前依次比較處理,減少移動次數,提高效率。void sorta1a2 int a1,int length1,int sizeofa1,int ...
合併兩個有序陣列
例如 陣列a1 陣列a2 則合併為a3 思路 依次掃瞄a1和a2的元素 比較當前元素的值,將較小的元素賦給a3,直到乙個陣列掃瞄完畢,然後將另乙個陣列的剩餘元素賦給a3即可。陣列a3的容量需要容納a1和a2兩個陣列和長度和。實現 include include void merge int a1,i...