fancycarp
fancycarp
全部文章
分类
题解(44)
归档
标签
去牛客网
登录
/
注册
fancycarp的博客
全部文章
(共44篇)
题解 | #判断链表中是否有环#
快慢指针,注意判断是否为空 class Solution { public: bool hasCycle(ListNode *head) { if(head == nullptr) return false; ListNode *fa...
双指针
2021-05-06
0
304
题解 | #用两个栈实现队列#
push操作就直接往stack1中push, pop操作需要分类一下:如果stack2为空,那么需要将stack1中的数据转移到stack2中,然后在对stack2进行pop,如果stack2不为空,直接pop就ok。 class Solution { public: void push(i...
栈
队列
2021-05-06
0
317
题解 | #子数组的最大累加和问题#
动态规划:dp[i]代表以arr[i]结尾的若干个子数组中的和的最大值。状态转移方程:dp[i] = arr[i], if dp[i -1] < 0dp[i] = dp[i - 1] + arr[i], if dp[i - 1] >= 0然后取dp数组里的最大值就行。 class Sol...
动态规划
2021-05-06
0
331
题解 | #链表中的节点每k个一组翻转#
非递归:分成K组,每一组单独调用普通的链表反转函数。 class Solution { public: ListNode* reverseKGroup(ListNode* head, int k) { ListNode * dummy = new ListNode(0); ...
递归
链表
2021-05-06
0
392
NC41 #最长无重复子串#
双指针。要注意的是18行left = max(left, index + 1);一定不要忘记加max,因为left这次不是一步一步往前走了,是往前跳跃,跳跃的时候有可能直接跳过了未来可能出现的“重复数字”。 class Solution { public: /** * ...
双指针
2021-05-06
0
449
NC68 #跳台阶#
最简单的动态规划 class Solution { public: int jumpFloor(int number) { int dp[number + 1]; dp[1] = 1; dp[0] = 1; for(int i ...
动态规划
2021-05-06
1
911
NC33 #合并有序链表#
非递归方法: class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(l1 == nullptr) return l2; if(l2 == nullpt...
递归
链表
2021-05-05
0
410
NC88 #寻找第K大#
运用快速排序的思想,但是要注意一点:第24行:if(left <= right)这个地方,只是排序的时候加不加等号都是一样的,但是这道题里一定要加上,要不然会直接跳错误。还有就是一定不要忘了加&!!!! class Solution { public: int findKth(...
递归
2021-05-05
0
450
NC15 #求二叉树的层序遍历#
递归思想,用一个队列维护每一次递归的树节点,每打印一个值的同时就把他的左孩子和右孩子(如果不是nllptr的话)添加到队列里。为了保证层次性,每循环一层之前都要获得队列的size()。 /** * struct TreeNode { * int val; * struct Tree...
递归
2021-05-05
0
433
NC45 #实现二叉树先序,中序和后序遍历#
递归: /** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution { public: /** ...
2021-05-05
0
368
首页
上一页
1
2
3
4
5
下一页
末页