leetcode1.两数之和 c++详解

题目

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

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

示例:
给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

分析

题目让我们找到整数返回下标,很明显只需要两个for循环就可以暴力求解得到结果,但是怎么可以更优化呢?利用map的特性就可以。在Java中用hashmap更简单,这里仅介绍c++,有兴趣可以学一下Java。

解决方案

方法一:暴力法,两个for循环

class Solution {
public:
    vector twoSum(vector& nums, int target) {
        vectorres;//返回值
        for(int i=0;i

方法二:两遍map,说白了就是用了map的函数及特性

class Solution {
public:
    vector twoSum(vector& nums, int target) {
        map cur;
        vectorres;//返回值
        int temp;
        for(int i=0;isecond
                break;//找到了就退出
            }
        }
        return res;
    }
};

方法三:一遍map,将方法二优化了一下

class Solution {
public:
    vector twoSum(vector& nums, int target) {
        mapcur;
        vectorres;//返回值
        int temp;
        for(int i=0;i

你可能感兴趣的:(leetcode1.两数之和 c++详解)