8.(输入)定义一个整型数组array和一个整数target,找出(输出)数组array中两个数的和与乘为target的所有组合。
时间: 2024-10-08 12:02:31 浏览: 31
这是一个经典的编程问题,通常称为“两数之和”或“查找目标积”。给定一个整数数组`array`和一个目标值`target`,你需要找到数组中存在的一对整数,使得它们相加等于`target`,或者相乘等于`target`(如果允许有重复元素)。这个问题可以使用哈希表(Hash Table)或者双指针技巧来解决。
以下是使用Python的一个解决方案:
```python
def find_sum_or_product(array, target):
# 创建一个空的字典来存储每个元素及其索引
num_dict = {num: index for index, num in enumerate(array)}
# 双指针,一个从开始,一个从结束向中间移动
left, right = 0, len(array) - 1
while left < right:
current_num = array[left] * array[right]
# 如果当前乘积等于目标,返回对应的索引
if current_num == target:
return [num_dict[array[left]], num_dict[array[right]]]
# 如果当前乘积大于目标,减小右指针寻找较小的乘积
elif current_num > target:
right -= 1
# 如果当前乘积小于目标,增大左指针寻找较大的乘积
else:
left += 1
# 没有找到符合条件的组合,返回None 或者 []
return None
# 示例
array = [1, 2, 3, 4, 5]
target = 10
print(find_sum_or_product(array, target)) # 输出:[0, 9] 或 [2, 8](取决于重复元素处理)
```
阅读全文