fancycarp
fancycarp
全部文章
分类
题解(44)
归档
标签
去牛客网
登录
/
注册
fancycarp的博客
全部文章
(共10篇)
NC136 #输出二叉树的右视图#
先重构二叉树,后层次遍历。 class Solution { public: unordered_map<int, int> index; TreeNode* rebuild(vector<int>& pre, int pre_left, int pr...
DFS
递归
栈
队列
层次遍历
2021-05-12
0
430
NC121 #字符串的排列#
递归,注意判断去重。 class Solution { public: vector<string> vec; void dfs(string ans, string str) { int len = str.size(); if(...
DFS
递归
2021-05-12
0
371
NC12 #重建二叉树#
递归。注意下标!先序遍历中「从 左边界+1 开始的 size_left_subtree」个元素就对应了中序遍历中「从 左边界 开始到 根节点定位-1」的元素。先序遍历中「从 左边界+1+左子树节点数目 开始到 右边界」的元素就对应了中序遍历中「从 根节点定位+1 到 右边界」的元素。 class S...
递归
2021-05-09
0
342
NC102 #在二叉树中找到两个节点的最近公共祖先#
用DFS如果root->val等于o1或者o2,就返回o1或者o2。如果左右子树一个返回o1一个返回o2,那就返回当前节点的val,因为这就是要找的节点。如果左右子树中有某一个返回了不是-1也不是o1或o2,那就说明那底下有要找的节点,直接返回他返回的值。如果都不是就返回-1。 class S...
DFS
递归
2021-05-09
1
410
题解 | #链表中的节点每k个一组翻转#
非递归:分成K组,每一组单独调用普通的链表反转函数。 class Solution { public: ListNode* reverseKGroup(ListNode* head, int k) { ListNode * dummy = new ListNode(0); ...
递归
链表
2021-05-06
0
384
NC33 #合并有序链表#
非递归方法: class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(l1 == nullptr) return l2; if(l2 == nullpt...
递归
链表
2021-05-05
0
400
NC88 #寻找第K大#
运用快速排序的思想,但是要注意一点:第24行:if(left <= right)这个地方,只是排序的时候加不加等号都是一样的,但是这道题里一定要加上,要不然会直接跳错误。还有就是一定不要忘了加&!!!! class Solution { public: int findKth(...
递归
2021-05-05
0
445
NC15 #求二叉树的层序遍历#
递归思想,用一个队列维护每一次递归的树节点,每打印一个值的同时就把他的左孩子和右孩子(如果不是nllptr的话)添加到队列里。为了保证层次性,每循环一层之前都要获得队列的size()。 /** * struct TreeNode { * int val; * struct Tree...
递归
2021-05-05
0
423
NC140 #排序#
正好复习一下快速排序:一定不要忘记加&!!!!!忘加了就寄了 class Solution { public: void swap(vector<int>& arr, int a, int b) { int temp = arr[a]; ...
递归
排序
2021-05-05
0
338
NC78 #反转链表#
解法一:双指针注意点:left要初始化为NULL class Solution { public: ListNode* ReverseList(ListNode* pHead) { ListNode* left = NULL, *right = pHead; ...
递归
链表
双指针
2021-05-04
0
429