fancycarp
fancycarp
全部文章
分类
题解(44)
归档
标签
去牛客网
登录
/
注册
fancycarp的博客
全部文章
(共10篇)
NC141 #判断回文#
双指针。别用递归,字符串太长了会爆栈。 class Solution { public: bool judge(string str) { int len = str.size(); int left = 0, right = len - 1; ...
字符串
双指针
2021-05-13
0
442
NC128 #容器盛水问题#
用双指针,从两边向中间收缩。思考一下为什么不能从一边往另一边走到头。 class Solution { public: long long maxWater(vector<int>& arr) { int len = arr.size(); ...
双指针
2021-05-12
1
404
NC7 #买卖股票的最好时机#
双指针,遇到比left位置更小的值,就把left移到那里。 class Solution { public: int maxProfit(vector<int>& prices) { int len = prices.size(); int...
双指针
2021-05-12
0
323
NC54 #数组中相加和为0的三元组#
双指针。先排序,然后固定一个数,用双指针从两端遍历得到其他两个数。注意去重复。 class Solution { public: vector<vector<int> > threeSum(vector<int> &num) { v...
双指针
2021-05-09
0
402
NC66 #两个链表的第一个公共结点#
两个指针分别把两个链表a,b各走一遍,因为len(a + b) = len(b + a),所以相遇的时候就是第一个公共节点了。 class Solution { public: ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode...
链表
双指针
2021-05-08
0
357
NC53 #删除链表的倒数第n个节点#
先便利一遍查数,然后再走一遍删节点。 class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { int count = 0; ListNode *pHead = h...
链表
双指针
2021-05-08
0
488
题解 | #链表中环的入口节点#
用快慢指针,分别从两指针相遇位置和头指针位置出发两个相同速度的指针,相遇的位置就是环开始的位置。 class Solution { public: ListNode *detectCycle(ListNode *head) { ListNode *fast = head, *...
双指针
2021-05-06
0
323
题解 | #判断链表中是否有环#
快慢指针,注意判断是否为空 class Solution { public: bool hasCycle(ListNode *head) { if(head == nullptr) return false; ListNode *fa...
双指针
2021-05-06
0
304
NC41 #最长无重复子串#
双指针。要注意的是18行left = max(left, index + 1);一定不要忘记加max,因为left这次不是一步一步往前走了,是往前跳跃,跳跃的时候有可能直接跳过了未来可能出现的“重复数字”。 class Solution { public: /** * ...
双指针
2021-05-06
0
449
NC78 #反转链表#
解法一:双指针注意点:left要初始化为NULL class Solution { public: ListNode* ReverseList(ListNode* pHead) { ListNode* left = NULL, *right = pHead; ...
递归
链表
双指针
2021-05-04
0
433