tongqingliu

保持学习的态度

LeetCode--1.TwoSum

LeetCode--1.TwoSum

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].

首先想到的直接两个循环不就完了,代码如下:

#include<iostream>
#include<vector>
using namespace std;

class Solution
{
public:
	vector<int> twoSum(vector<int>& nums, int target)
	{
		vector<int> res;
		for (int i = 0; i < nums.size() - 1; ++i)
		{
			for (int j = i + 1; j < nums.size(); ++j)
				
				if (nums[i] + nums[j] == target)
				{
					res.push_back(i);
					res.push_back(j);
					break;
				}
		}
		return res;
	}
};
int main()
{
	vector<int> nums{ 2,7,11,15 };
	int target = 9;
	Solution s;
	vector<int> res = s.twoSum(nums, target);
	system("pause");
	return 0;
}

结果提交了之后超时了=。=

20170921更新
同样的思想,用Python过了~

class Solution:
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        d= []
        for i in range(len(nums)):
            if nums[i] not in d:
                d.append(target-nums[i])
            else:
                return (d.index(nums[i]), i)

posted on 2017-09-09 19:18  tongqingliu  阅读(214)  评论(1编辑  收藏  举报

导航