
Leetcode 题解(C++)
记录刷 Leetcode 过程中的思路整理,PS:按题号刷,追求最优解。Leetcode主页:https://leetcode-cn.com/u/stormjing/
stormjing7
这个作者很懒,什么都没留下…
展开
-
Leetcode 3. 无重复字符的最长子串(双指针)
Leetcode 3. 无重复字符的最长子串 题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 分析 思路 找符合特定条件的子串,首先暴力就是枚举。为了方便枚举可以将其分类为以 s[i] 结尾的字符串集合,这样就变为找所有集合中最大值。 进一步,对于每一个结尾为 s[i] 的字符串,要找到最左边的 j ,那么 s[j -> i]即为当前集合的目标字串,i - j + 1 即为当前集合的答案。 如何找 j,可以从 i 往前扫,直到 s[j-1 -> i] 中有重复元素。原创 2021-01-13 12:19:27 · 388 阅读 · 0 评论 -
Leetcode 2. 两数相加(模拟)
题目 给两个非空链表,每个链表代表一个数,返回两个链表之和 分析 思路:直接模拟即可 实现:维护一个进位 t ????:Leetcode 链表题可以设置一个虚拟头节点 dummy,使头节点一般化,便于操作。 代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} *原创 2021-01-12 22:21:51 · 325 阅读 · 0 评论 -
Leetcode 1. 两数之和(哈希)
题目 给一个数组,和一个目标值 target,要找到数组中两个数加起来等于 target,并返回两个数下标,注意两个数不能是相同的数。只有一种答案。 分析 当然可以暴力,O(n^2)枚举所有两个数的可能。 O(n) 做法是,利用两个数之间的联系,固定一个数 a,另外一个数也随之固定:target - a。可以用哈希预处理数组,将第二个循环优化掉。 代码思路就是,因为一定存在一对数符合,可以固定第二个数,在当前位置前面找第一个数。 注意 map 底层红黑树,平均 O(logn); unordered_map原创 2021-01-12 20:38:37 · 281 阅读 · 0 评论