刷题链接:力扣Hot 100 每日一题,每日一更,白板手写。 1.两数之和: 暴力就不写了,哈希判断。
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int,int> hashmap;
for(int i=0;i<nums.size();i++){
auto it=hashmap.find(target-nums[i]);
if(it==hashmap.end())
hashmap.insert(pair<int,int>(nums[i],i));
else return vector<int>{it->second,i};
}
return vector<int>{-1,-1};
}
};
2.两数相加 对应位置相加即可,但需要注意最高位可能会进位。
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* ans=nullptr;
ListNode* nxt=nullptr;
int carry=0;
while(l1||l2){
int n1=l1?l1->val:0;
int n2=l2?l2->val:0;
int x=n1+n2+carry;
if(ans==nullptr)ans=nxt=new ListNode(x%10);
else{
nxt->next=new ListNode(x%10);
nxt=nxt->next;
}
carry=x/10;
if(l1)l1=l1->next;
if(l2)l2=l2->next;
}
if(carry)nxt->next=new ListNode(carry);
return ans;
}
};
|