要找到两个数组中具有相同数字的位置,可以使用多种方法。以下是几种常见的方法及其详细解释:
暴力法是最简单直接的方法,通过嵌套循环遍历两个数组,找到相同的元素并记录它们的位置。
示例代码:
def find_common_elements(arr1, arr2):
common_positions = []
for i in range(len(arr1)):
for j in range(len(arr2)):
if arr1[i] == arr2[j]:
common_positions.append((i, j))
return common_positions
# 示例
arr1 = [1, 2, 3, 4, 5]
arr2 = [3, 4, 5, 6, 7]
print(find_common_elements(arr1, arr2)) # 输出: [(2, 0), (3, 1), (4, 2)]
优点:
缺点:
使用哈希表(字典)来记录一个数组中的元素及其位置,然后遍历另一个数组,检查元素是否在哈希表中存在。
示例代码:
def find_common_elements(arr1, arr2):
hash_table = {}
common_positions = []
# 记录arr1中的元素及其位置
for i, num in enumerate(arr1):
if num not in hash_table:
hash_table[num] = [i]
else:
hash_table[num].append(i)
# 检查arr2中的元素是否在hash_table中
for j, num in enumerate(arr2):
if num in hash_table:
for pos in hash_table[num]:
common_positions.append((pos, j))
return common_positions
# 示例
arr1 = [1, 2, 3, 4, 5]
arr2 = [3, 4, 5, 6, 7]
print(find_common_elements(arr1, arr2)) # 输出: [(2, 0), (3, 1), (4, 2)]
优点:
缺点:
先对两个数组进行排序,然后使用双指针法找到相同的元素并记录它们的位置。
示例代码:
def find_common_elements(arr1, arr2):
arr1.sort()
arr2.sort()
common_positions = []
i, j = 0, 0
while i < len(arr1) and j < len(arr2):
if arr1[i] == arr2[j]:
common_positions.append((i, j))
i += 1
j += 1
elif arr1[i] < arr2[j]:
i += 1
else:
j += 1
return common_positions
# 示例
arr1 = [1, 2, 3, 4, 5]
arr2 = [3, 4, 5, 6, 7]
print(find_common_elements(arr1, arr2)) # 输出: [(2, 0), (3, 1), (4, 2)]
优点:
缺点:
通过以上方法,可以有效地找到两个数组中具有相同数字的位置。选择哪种方法取决于具体的需求和数据规模。
领取专属 10元无门槛券
手把手带您无忧上云