题目:给定一阵列和目标值,回传阵列中两数相加等于目标值的阵列位址,数值不可重複使用。(假设阵列中一定有两数相加等于目标值)
Example 1:
Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].
Example 2:
Input: nums = [3,2,4], target = 6
Output: [1,2]
Example 3:
Input: nums = [3,3], target = 6
Output: [0,1]
解法:
建立检查阵列,把补数设为key,value纪录当前阵列位址,当补数的key出现,则回传先前纪录对应补数的阵列位址以及当前阵列位址。
def two_sum(nums, target) check ={} index = 0 nums.each do |num| if check[num] return[check[num],index] end complement = target - num check[complement] = index index += 1 end end