LeetCode笔记01

1.两数之和
2.两数相加
3.无重复字符的最长子串
突然发现直接写leetcode比写竞赛题来的效果好,以后尽量每天都写写总结一下吧。

两数之和

学到了哈希写法:

unordered_map<K, T> hashtable;
//本题K是题目中nums数组的值,T对应nums数组值的下标。
unordered_map<int, int> heap;
//本题的找可以用两种方式来实现:
//1.如果寻找的键,不是哈希表的结束,那么表示找到。
if(heap.find(target - nums[i]) != heap.end()) return {};
//2.如果寻找的值,在哈希表中的count有,那么表示找到。
if(heap.count(heap[target - nums[i]])) return {};

本题小结:寻找一个值,可以考虑hash(无序的情况)。

两数相加

学到了虚拟结点dummy的写法:

auto dummy = new ListNode(-1), cur = dummy;
//最后要返回dummy->next;
return dummy->next;

其他则没啥了,高精度加法还是蛮简单的。

无重复字符的最长子串

不知道为啥我用int st[150]会失败,换成unordered_map<char, int> st就成功了。
这题就是acwing中最长连续不重复子序列。双指针算法,核心在于两个指针遍历总共2N次。

posted @ 2022-10-23 23:32  wushucan  阅读(9)  评论(0)    收藏  举报