001 两数之和
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target)
{
unordered_map<int,int> m;
for(int i = 0;i < nums.size();++i)
{
m.insert(make_pair(nums[i],i));
int temp = target - nums[i];
unordered_map<int,int>::iterator it = m.find(temp);
if((it != m.end())&& (it->second != i))
{
return{it->second,i};
}
}
return vector<int>(0,0);
}
};
002 两数相加
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2)
{
int up = 0;
ListNode* tail = nullptr;
ListNode* ret = nullptr;
while(l1 || l2 || up != 0)
{
int num1 = l1?l1->val:0;
int num2 = l2?l2->val:0;
int sum = num1+num2+up;
up = 0;
if(sum >= 10)
{
sum = sum -10;
up = 1;
}
if(!ret)
{
ret = tail = new ListNode(sum);
}
else
{
tail->next = new ListNode(sum);
tail = tail->next;
}
if(l1 != nullptr){l1 = l1->next;}
if(l2 != nullptr){l2 = l2->next;}
}
return ret;
}
};