力扣第一题怎么做
力扣第一题是“两数之和”,题目描述如下:
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
你可以按任意顺序返回答案。
示例 1:
输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
解题思路:
这道题可以使用暴力枚举的方法,即遍历数组中的每一个元素,然后再遍历其后面的元素,找到两个元素的和等于目标值即可。
代码如下:
class Solution {
public:
vector
时间复杂度:O(n^2)
如果想要更优秀的时间复杂度,可以使用哈希表来记录已经遍历过的元素和它们的下标,这样在遍历到一个元素时,就可以判断目标值减去该元素的差是否在哈希表中,如果在,则找到了两个元素的和为目标值。
代码如下:
class Solution {
public:
vector
时间复杂度:O(n)
其中,unordered_map是哈希表的实现,find()函数用来查找哈希表中是否存在指定的键值,end()函数返回一个迭代器,指向哈希表中最后一个元素的后面。如果find()函数查找的键值不存在,它将返回end()函数返回的迭代器。
原文地址: https://www.cveoy.top/t/topic/bSyM 著作权归作者所有。请勿转载和采集!