給定兩個陣列,寫乙個方法來計算它們的交集。一種思路
先遍歷第乙個陣列,然後遍歷第二個陣列,尋找公共交集
# 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 ...