1. 程式人生 > >判斷兩個陣列中是否存在相同的數字(Python)

判斷兩個陣列中是否存在相同的數字(Python)

給定兩個已排好序的陣列,判斷兩個陣列中是否存在相同的數字?

第一種辦法:遍歷其中一個數組中的每個元素,然後在第二個陣列中用二分查詢法,檢查是否存在相同的元素。其時間複雜度是O(nlog n).沒有利用陣列有序這個資訊。

第二種辦法:設定兩個下標,分別初始化為兩個陣列的第一個元素,比較當前兩個元素的大小,將較小元素的下標加一,如果有相同的數字,則返回True,如果直到陣列末尾還沒有相同的數字出現,則返回False。

程式如下:

def findSameNum(num1, num2):
    i = j = 0
    while i <= len(num1)-1 and j <= len(num2)-1:
        if num1[i] == num2[j]:
            return True
        if num1[i] <= num2[j]:
            i += 1
        else:
            j += 1
    return False


if __name__=="__main__":
    num1 = [1,2,3,4,5]
    num2 = [5,6,7,8]
    print(findSameNum(num1, num2))