php找出兩個有序陣列中的相同元素

2021-08-10 10:14:34 字數 630 閱讀 5960

如題,筆試一般喜歡考這些問題,給定兩個有序陣列(元素唯一,不重複),如何從中找出相同的元素

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...