HOT100
HOT100
豆沙睡不醒
永远不要停下脚步
展开
-
【 LeetCode 热题 HOT 100】4. 寻找两个正序数组的中位数 (C++ 遍历 分类讨论)
题目链接 题意: 寻找两个已经从小到大排好序的数组的中位数。 思路: 大概是比较投机取巧的一种方法,时间复杂度为O(n)O(n)O(n)的。 先计算两个数组的元素个数总和,分奇偶讨论。 如果是奇数的话,中位数是第(sum+1)/2个数;否则,是中间两个数的平均数。 分别设两个指针tx,ty,用来遍历两个数组。 每次都让当前数的指针前移。 最后维护下中位数就好了~ 代码: class Solution { public: double findMedianSortedArrays(vector&l原创 2022-01-17 13:41:23 · 235 阅读 · 0 评论 -
【 LeetCode 热题 HOT 100】3. 无重复字符的最长子串 (C++ 哈希 思维)
题目链接 题意: 给出一个字符串(长度为5e4),求没有重复字符的最长连续串。 思路: 由于长度为5e4,考虑O(n)O(n)O(n)的遍历。 用map存储在当前位置之前该字符的最后一次出现的位置是第几个。 las表示如果以当前字符串为结尾,能够保证不重复的位置。 i-las+1就是以当前字符串结尾的答案。 取最大值就好了。 代码: class Solution { public: int lengthOfLongestSubstring(string s) { int ans=0,原创 2022-01-17 12:59:28 · 221 阅读 · 0 评论 -
【 LeetCode 热题 HOT 100】2. 两数相加 (C++ 链表 模拟)
题目链接 题意: 给出两个非空的链表,表示两个非负整数。求两数相加的和。答案也是链表形式。 数据范围: 思路: 由于题目的数据范围表明了每个链表的节点数在范围[1,100]内,也就是说对于C++来说,是无法用变量存储的,所以首先排除掉直接计算的可能。 加法本质上就是一种模拟,本位的数相加后,保存进位是多少,再继续计算下一位。 对于链表来说,要先设置头指针resresres,用于自己返回答案。设立尾指针ansansans,用于添加新的节点,记录答案。 同时遍历两个链表,如果某个节点已经为空,那么说明该节点原创 2022-01-17 12:06:18 · 326 阅读 · 0 评论