程序员面试现场编程

当面试官要求你在面试现场编写代码时,这是一个机会展示你的编程能力和解决问题的能力。下面是一个示例代码和对应的解决思路。

问题:给定一个整数数组nums和一个目标值target,找出数组中和为目标值的两个数,并返回它们的索引。

示例代码(使用Python语言):

def twoSum(nums, target):
    complement_map = {}  # 用字典记录每个数的补数和对应的索引
    for i, num in enumerate(nums):
        complement = target - num
        if complement in complement_map:
            return [complement_map[complement], i]
        complement_map[num] = i
    return None

该问题可以使用哈希表来解决。我们可以遍历数组中的每个元素,对于每个元素,我们检查目标值减去当前元素得到的差值是否已经存在于哈希表中。如果存在,说明之前已经遍历过的某个元素与当前元素的和为目标值,返回它们的索引;如果不存在,将当前元素作为键,索引作为值存入哈希表中。

在代码中,我们使用一个字典(哈希表)complement_map来记录每个数的补数和对应的索引。我们遍历数组nums,对于每个元素num,我们计算其补数complement = target - num。然后检查补数complement是否在complement_map中,如果存在,则返回补数的索引和当前元素的索引;如果不存在,则将当前元素num及其索引i加入complement_map中。这样,在遍历过程中,如果找到满足条件的两个数,可以立即返回结果,提高了效率。

这种解决思路的时间复杂度为O(n),其中n是数组的长度。通过使用哈希表来存储数值和索引的对应关系,我们可以在常数时间内查找某个数值的索引,从而提高了查找的效率。

posted @ 2023-06-04 08:05  拓源技术  阅读(100)  评论(0)    收藏  举报