1 两数之和
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int,int> mapit;
map<int,int>::iterator it;
for(int i=0;i<nums.size();++i)
{
it=mapit.find(target-nums[i]);
if(it!=mapit.end())
{
return vector<int>{it->second,i};
}
mapit.insert(pair<int,int>{nums[i],i});
}
return vector<int>{-1,-1};
}
};
2 两数相加
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
int icarry=0;
ListNode* pReturn=new ListNode();
ListNode* p=pReturn;
while(l1!=nullptr&&l2!=nullptr)
{
ListNode* temp=new ListNode();
p->next=temp;
p=p->next;
temp->val=(l1->val+l2->val+icarry)%10;
icarry=(l1->val+l2->val+icarry)/10;
l1=l1->next;
l2=l2->next;
}
while(l1)
{
ListNode* temp=new ListNode();
p->next=temp;
p=p->next;
temp->val=(l1->val+icarry)%10;
icarry=(l1->val+icarry)/10;
l1=l1->next;
}
while(l2)
{
ListNode* temp=new ListNode();
p->next=temp;
p=p->next;
temp->val=(l2->val+icarry)%10;
icarry=(l2->val+icarry)/10;
l2=l2->next;
}
if(icarry!=0)
{
ListNode* temp=new ListNode();
p->next=temp;
p=p->next;
temp->val=icarry;
}
return pReturn->next;
}
};
3 无重复字符的最长子串
class Solution {
public:
int lengthOfLongestSubstring(string s) {
map<int,int> mapit;//从first开始的最长不重复字串的长度second
set<char> sets;
set<char>::iterator it;
for(int i=0;i<s.size();++i)
{
sets.clear();
for(int j=i;j<s.size();++j)
{
it=sets.find(s[j]);
if(it!=sets.end())
{
break;
}else
{
sets.insert(s[j]);
}
}
mapit[i]=sets.size();
}
int iMax=0;
for(auto elem:mapit)
{
if(elem.second>iMax)
{
iMax=elem.second;
}
}
return iMax;
}
};