ZX2021
ZX2021
全部文章
题解
未归档(1)
归档
标签
去牛客网
登录
/
注册
ZX2021的博客
程序员的自我修养
全部文章
/ 题解
(共72篇)
题解 | #在二叉树中找到两个节点的最近公共祖先#
寻找目标节点到根节点的路径,用栈保存。从根节点开始出栈,只要两个栈的节点相同则出栈否则退出。最后一次出栈的就是最近的公共祖先。 /** * struct TreeNode { * int val; * struct TreeNode *left; * struct Tree...
二叉树
栈
2021-08-03
0
535
题解 | #最长无重复子数组#
使用unordered_set来保存目前已经存在的数,使用vector来保存目前已经存在的数并且保持有序的状态。若能够在集合中找到当前欲插入的数,则先将集合中的这个数删除并且需要将vector中该数之前的数都删除,以及需要将这些数都从集合中删除。再将当前的数插入到集合以及vector中。 class...
数组
vector
哈希
集合
2021-08-03
0
496
题解 | #按之字形顺序打印二叉树#
该题类似于二叉树的层序遍历,间隔一层就会出现翻转的情况而已。 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : ...
二叉树
层序遍历
2021-08-03
0
374
题解 | #链表中环的入口结点#
快慢指针找相遇点,相遇时慢指针从头开始跑,快指针从相遇点继续跑,最终在环的入口处相遇。 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NU...
环
链表
2021-08-03
0
378
题解 | #两个链表生成相加链表#
链表翻转后节点相加(使用栈模拟),如果有进位则记录,产生新的结点以头插法插入到新的链表;注意加完以后需要检查最后是否有进位,如果有进位就还需要再插入一个新的节点。 /** * Definition for singly-linked list. * struct ListNode { * ...
链表
2021-08-02
0
572
题解 | #两个链表的第一个公共结点#
将两个链表倒过来比较,如果元素相同则继续比较,直到遇到不是相同的元素时退出循环。这里使用stack来将链表倒过来。 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : ...
链表
2021-08-02
0
431
题解 | #两个链表的第一个公共结点#
让指针走完两条链表,并且最多只能走一次。如果任何一个链表为空则直接返回空指针。 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NU...
链表
2021-08-02
0
441
题解 | #括号序列#
采用栈的结构来检查,遇到左括号则入栈,遇到右括号则对应出栈。如果出栈时没有遇到相应的左括号则表示括号不匹配。如果在最后栈中有元素则表示右括号不足,也表示括号不匹配。 class Solution { public: /** * * @param s string字符串 ...
栈
stack
2021-08-02
0
367
题解 | #子数组的最大累加和问题#
遍历数组统计累加和,如果累加和小于0则统计后面的数时会导致亏损,还不如不加,不加就是将累加和置0。最大的累加和就是答案,用一个变量来记录。 class Solution { public: /** * max sum of the subarray * @param ar...
最大累加和
2021-08-02
0
409
题解 | #合并两个有序的数组#
两个索引位置分别从两个数组最右边开始,选择一个较大的数插入到A的最右边,插入后改变索引位置。到最后如果B中的数没有完全插入到B中,则将剩余的数插入到A中。 class Solution { public: void merge(int A[], int m, int B[], int n) ...
双指针
数组
2021-08-02
0
392
首页
上一页
1
2
3
4
5
6
7
8
下一页
末页