入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

[LeetCode] 两数之和

创建时间:2018-03-29 投稿人: 浏览次数:190

英文描述

Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].


中文描述

给定一个整数数列,找出其中和为特定值的那两个数。

你可以假设每个输入都只会有一种答案,同样的元素不能被重用。

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

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


解题:

class Solution {
public:
    vector<int> twoSum(vector<int>& numbers, int target) 
    {
        vector<int> result = {};
        for (size_t i = 0; i < numbers.size(); i++)
        {
            // 在numbers中找 target - numbers[i] 这个值
            int numberFind = target - numbers[i];
            auto iter = find(numbers.cbegin(), numbers.cend(), numberFind);
            if (iter != numbers.cend())
            {
                // 找到,算出其位置index
                int index = distance(numbers.cbegin(), iter);
                if (index == i)
                    continue;
                result.emplace_back(i);
                result.emplace_back(index);
                break;
            }
        }

        return result;
    }
};
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。