· 5 分钟
two sum
1 两数之和
https://leetcode.cn/problems/two-sum/
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> m;
vector<int> result;
for(int i = 0; i < nums.size(); i++) {
if(m.contains(target - nums[i])) {
result.push_back(m[target - nums[i]]);
result.push_back(i);
return result;
}
m[nums[i]] = i;
}
return result;
}
};
2.两数相加
https://leetcode.cn/problems/add-two-numbers/
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* dummy = new ListNode();
int cur = 0;
ListNode* p = dummy;
while(l1 || l2 || cur > 0) {
int sum = cur;
if(l1) {
sum += l1 -> val;
l1 = l1 -> next;
}
if(l2) {
sum += l2 -> val;
l2 = l2 -> next;
}
cur = sum / 10;
int val = sum % 10;
ListNode* node = new ListNode();
node -> val = val;
p -> next = node;
p = p -> next;
}
return dummy -> next;
}
};
3.无重复字符的最长子串
https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int res = 0;
unordered_set<char> set;
for(int i = 0, j = 0; j < s.length();) {
while(i < j && set.contains(s[j])) {
set.erase(s[i]);
i++;
}
set.insert(s[j++]);
res = res > set.size() ? res : set.size();
}
return res;
}
};