LeetCode入坑第一题:twoSum (C++)

题目描述:

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

题目要求:

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

题目示例:

给定nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]

我的想法:

首先,最直观的想法,抱着必死的决心决定试一下暴力搜索。复杂度O(n^2)。结果...过了???为什么这都能过???

上代码:

//172ms
class Solution {
public:
    vector twoSum(vector& nums, int target) {
        vector ans;
        for(int i=0;i

 虽然过了,但是本着学东西的心态,尝试别的方法。

看了一些大神代码后,好好学习了一下(看懂原理然后...照猫画虎),采用Hashmap。时间从172ms降到了8ms。

上代码:

//8ms
class Solution {
public:
    vector twoSum(vector& nums, int target) {
        vector result;
        unordered_map m;
        for(int i=0;i

nice。

我怎么可以这么优秀?

hhh,继续刷题,早日成为祖国栋梁!

你可能感兴趣的:(LeetCode入坑第一题:twoSum (C++))