📅  最后修改于: 2023-12-03 15:42:21.786000             🧑  作者: Mango
这是一个技术问题,旨在验证程序员的编程能力和解决问题的能力。通过解决这个问题,程序员可以展示他们的思维方式和编程技巧。
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例:
给定 nums = [2, 7, 11, 15], target = 9,
因为 nums[0] + nums[1] = 2 + 7 = 9,
所以返回 [0, 1].
实现一个函数,接收一个整数数组和一个目标值,返回一个包含两个数字索引的数组,这两个数字索引对应的数组值的和等于目标值。
函数定义如下:
def twoSum(nums, target):
pass
下面是示例代码,仅供参考:
def twoSum(nums, target):
hashMap = {}
for i, num in enumerate(nums):
if target - num in hashMap:
return [hashMap[target - num], i]
hashMap[num] = i
return []
该函数采用了哈希表来实现,时间复杂度为 O(n)。使用哈希表的方式可以在遍历一遍数组的同时,快速地在哈希表中查找对应的元素,从而达到较好的性能表现。
通过这道题目,程序员能够掌握哈希表的基本使用方法,并且学会了如何在具有性能约束的情况下,快速地解决问题。同时,该问题也提高了程序员的算法思维能力和编程能力,为其今后的工作奠定了基础。