LeetCode 給定兩個陣列,求它們的交集

2021-08-18 23:29:20 字數 1690 閱讀 7983

給定兩個陣列,寫乙個方法來計算它們的交集。
一種思路

先遍歷第乙個陣列,然後遍歷第二個陣列,尋找公共交集

# coding=utf-8

# @date :2018

# @author :shiwenzun

# @language :python3.6

#給定兩個陣列,寫乙個方法來計算它們的交集。

class solution:

def intersect(self, nums1, nums2):

""":type nums1: list[int]

:type nums2: list[int]

:rtype: list[int]

"""public_arry=

for i in nums1:

index =-1

for j in range(0,len(nums2)):

if nums2[j] == i:

index = j

break

if index != -1:

del nums2[index]

return public_arry

class solution(object):

def intersect(self, nums1, nums2):

""":type nums1: list[int]

:type nums2: list[int]

:rtype: list[int]

"""res =

nums2.sort()

for k in nums1:

flag, j = self.binarysearch(nums2, k)

if flag:

del nums2[j]

return res

def binarysearch(self, nums, num):

left = 0

right = len(nums) - 1

while left <= right:

mid = (left + right) / 2

if nums[mid] == num:

return true, mid

if nums[mid] < num:

left = mid + 1

else:

right = mid - 1

return false, 0

思路三 用字典存放nums1的值,和出現次數,然後和nums2進行對比

def intersect1(self, nums1, nums2):

""":type nums1: list[int]

:type nums2: list[int]

:rtype: list[int]

"""res=

temp={}

for i in nums1:

temp[i]=temp[i] + 1 if i in temp else 1

for j in nums2:

if j in temp and temp[j]>0:

temp[j]=temp[j]-1

return res

if __name__ == '__mai

給定兩個數,求這兩個數的最大公約數

第一次嘗試 include void math gys int a,int b else for int i t i a i b i int main 此 我的做法不夠好,這是一種暴力窮舉法,雖然能解決問題,但是不夠好,仍需進行優化。第二次嘗試 define crt secure no warnin...

求兩個陣列的交集

問題 給你兩個排序的陣列,求兩個陣列的交集。比如 a 1 3 4 5 7,b 2 3 5 8 9,那麼交集就是 3 5.思路 1.每一次從b陣列中取一值,然後在a陣列裡逐個比較,如果有相等的,則儲存。該演算法複雜度為 o mn m,n 分別為陣列 a b 的長度。2.因為a b 都排過序,所以,每一...

求兩個陣列的交集

方法 先用a建立 有序二叉樹,然後用b中的數值依次在二叉樹中尋找,如果找到了,就增加到交集陣列中 複雜度 建立二叉樹的複雜度logn,在二叉樹中查詢的複雜度是 logn m 1 include stdio.h int commonarray 20 int com len 0 struct node ...