当前位置:   article > 正文

两数之和解法_vector twosum(vector& nums, int target)

vector twosum(vector& nums, int target) {

方法一:很简单的暴力破解法

public:
	vector<int> twoSum(vector<int>& nums, int target) {
		int length = nums.size();

		for (int i = 0; i < length - 1; i++)
			for (int j = i + 1; j < length; j++)
			{
				if (nums[i] + nums[j] == target)
					return { i,j };
			}

		return {};
	}
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

方法二:使用两遍哈希表

public:
    vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int,int> m;
for(int i=0;i<nums.size();i++)
    m[nums[i]]=i; 
for(int i=0;i<nums.size();i++)
{
    if(m.find(target-nums[i])!=m.end()&&m[target-nums[i]]!=i)
    return {i,m[target-nums[i]]};
     }
    return {};
    }
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在第一次循环中,我们将每个元素的值和它的索引添加到表中。然后,在第二次循环中,我们将检查每个元素所对应的目标元素(target - nums[i])是否存在于表中。此方法相较于暴力破解法极大的节省了运行时间

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/460985
推荐阅读
相关标签
  

闽ICP备14008679号