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解法.因为具体解题思路已经很明确了,我就不再讲解了。