LeetCode 1. 两数之和

作者: SmallRookie | 来源:发表于2018-12-03 23:21 被阅读3次

题目描述

题解

暴力法

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int> result;
        for(int i=0; i < nums.size(); i++) {
            for(int j=i+1; j < nums.size(); j++) {
                if((nums[i]+nums[j])==target) {
                    result.push_back(i);
                    result.push_back(j);
                    return result;
                }
            }
        }
        return result;
    }
};

时间复杂度为O(n^2),空间复杂度为O(1)

哈希表法

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int> result;
        map<int, int>tmp;
        for(int i = 0; i < nums.size(); i++) {
            tmp[nums[i]] = i;
        }
        for(int i = 0; i < nums.size(); i++) {
            int complement = target - nums[i];
            if((tmp.count(complement) != 0) && (tmp[complement] != i)) {
            // if((tmp.contains(complement)) && (tmp[complement] != i)) {  // C++ 20
                result.push_back(i);
                result.push_back(tmp[complement]);
                return result;
            }
        }
        
        return result;
    }
    
};

时间复杂度为O(n),空间复杂度为O(n)

哈希表法进阶

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int> result;
        map<int, int>tmp;
        for(int i = 0; i < nums.size(); i++) {
            int complement = target - nums[i];
            if(tmp.count(complement) != 0) {
                result.push_back(i);
                result.push_back(tmp[complement]);
                return result;
            }
            tmp[nums[i]] = i;
        }
        
        return result;
    }
    
};

时间复杂度为O(n),空间复杂度为O(n)

相关文章

  • 【LeetCode通关全记录】1. 两数之和

    【LeetCode通关全记录】1. 两数之和 题目地址:1. 两数之和[https://leetcode-cn.c...

  • LeetCode(1. 两数之和)

    算法描述 : 算法实现 : Java实现 : Python实现

  • leetcode 1. 两数之和

    leetcode 1. 两数之和题目: 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每...

  • 1.两数之和 LeetCode

  • [LeetCode] 1. 两数之和

    给定一个整数数列,找出其中和为特定值的那两个数。 你可以假设每个输入都只会有一种答案,同样的元素不能被重用。示例:...

  • LeetCode 1. 两数之和

    题目链接:https://leetcode-cn.com/problems/two-sum/description...

  • LeetCode 1. 两数之和

    题目描述 题解 暴力法 时间复杂度为,空间复杂度为。 哈希表法 时间复杂度为,空间复杂度为。 哈希表法进阶 时间复...

  • [LeetCode] 1. 两数之和

    前言 从今天开始,将会开启我的 LeetCode 打卡之路。为了能让打卡坚持下去,就给自己设定了用博客来记录打卡过...

  • LeetCode 1. 两数之和

    题目: 题目地址:https://leetcode-cn.com/problems/two-sum/ 问题描述: ...

  • Leetcode 1.两数之和

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

网友评论

    本文标题:LeetCode 1. 两数之和

    本文链接:https://www.haomeiwen.com/subject/ptfpcqtx.html