leetcode每日一题(2021.5.4)
题目:两数之和(简单)
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
例:
输入:nums = [3,2,4], target = 6
输出:[1,2]
解答过程:
每种输入只会对应一个答案,所以数组中只有唯一的两个数之和等于目标值。
想法一:直接暴力求解
数组中各个元素两两相加,结果等于目标值时终止循环,输出下标。
代码:

想法二:对代码进行优化,空间换时间
暴力求解方法实际上对数组进行了n*n次遍历,如果要对代码进行优化就需要减少遍历次数
在遍历数组的同时,让目标值与数组中元素相减,这个相减的差值如果在hash表中可以找到,就说明已近找到了题目要求的两个数,返回下标即可
则hash表中要存储的键值对为,key=数组中的元素值,value=该元素对应的下标。
代码为:


浙公网安备 33010602011771号