C++/LeetCode #1:两数之和

我的代码十分简单,“暴力型”的:

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

还编译错误了好几次!虽然对了,可是用时不大乐观:

我都不好意思晒出来……我太菜了……

不过我只有六年级吗。加油!!!

===============================================================================
后记
今天又做了一次。

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        for i in nums:
            if i*2==target:
                x=nums.index(i)
                del nums[x]
                if i in nums:
                    if nums.index(i)<x:
                        return [x,nums.index[i]]
                    else:
                        y=nums.index(i)+1
                        return [x,y]
                else:
                    nums.insert(x,i)
                    continue
            if target-i in nums:
                return [nums.index(i),nums.index(target-i)]
                

这次用py做的。


你以为,这就结束了吗?

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        map={}
        for index,num in enumerate(nums):
            num2=target-num
            if num2 in map:
                return [map[num2],index]
            map[num]=index

这道题的正统做法应该是hash-map解法.因为具体解题思路已经很明确了,我就不再讲解了。

posted @ 2020-02-21 08:43  DreamcastleSystem  阅读(152)  评论(0编辑  收藏  举报