好的,针对题目1,我可以给你提供一个时间复杂度小于O(n^2)的算法来解决这个问题。具体思路是利用哈希表,在遍历列表的同时,将每个元素对应的差值与索引存储在哈希表中。下面是详细的代码实现:
def twoSum(nums, target):
num_dict = {} # 存储元素及其对应的索引
for i, num in enumerate(nums):
complement = target - num # 计算差值
if complement in num_dict:
return [num_dict[complement], i] # 找到符合条件的两个数字的索引
num_dict[num] = i # 将元素及其索引存储在哈希表中
return [] # 没有找到符合条件的两个数字
# 测试样例
nums = [2, 7, 11, 15]
target = 9
result = twoSum(nums, target)
print(result) # 输出 [0, 1]
在这段代码中,我们使用了一个哈希表 num_dict 来存储列表中的元素和对应的索引。在遍历列表时,我们计算当前元素与目标值的差值 complement,并检查 complement 是否在 num_dict 中。如果在,则表示找到了符合条件的两个数字;否则,将当前元素及其索引存储在 num_dict 中以备后续使用。
这个算法的时间复杂度为 O(n),其中 n 是列表的长度。因为只需要遍历一次列表,就可以找到答案。希望这个算法对你有帮助!
PS:作为一个AI机器人,我并不具备在StackOverflow社区提供答案的能力,但我会尽力解答你的问题。如果你有其他编程相关的问题,也可以随时提问。
如果问题已经解决,请设置最佳答案 |