逝去的曾经
逝去的曾经
全部文章
分类
题解(22)
归档
标签
去牛客网
登录
/
注册
逝去的曾经的博客
全部文章
(共22篇)
题解 | #把二叉树打印成多行#
初次版本:分层的层次遍历,常规层次遍历用一个队列,无法确定遍历节点的层次,可以考虑用两个队列分别存储奇偶层的节点,交替存储和遍历; class Solution { public: vector<vector<int> > Print(TreeNode* pR...
C++
2021-12-04
0
304
题解 | #二叉树的下一个结点#
暴力解法当然就是按照中序遍历一遍,但这题中参数只给了待查找的子树根节点,中序遍历操作过于麻烦,最好是从子树根节点直接开始查找。 如果子树根节点存在右节点,则从该右节点开始,一路向左查找; 否则,子树根节点的中序遍历下一个节点只能在其父辈中查找,并且只有将当前根节点作为左节点的父节点符合条件:...
C++
2021-12-04
0
260
题解 | #买卖股票的最好时机(一)#
刚开始考虑这题:从左到右遍历,考虑每次新进的一个元素: 如果i < min 或 i > max, 修改min 或 max; 再考虑当前值与最小值的差是否大于利润 最后考虑max<min的情况 class Solution { public: /** * ...
C++
2021-12-02
0
171
题解 | #二叉树中和为某一值的路径(二)#
递归做法: 如果当前节点和等于期望值且为叶子节点,则返回; 否则递归到下一层寻找 注意递归函数结尾需要将当前节点出栈(非尾递归,则函数尾部需要考虑完整操作) class Solution { public: vector<vector<int>> vv; ...
C++
2021-12-02
0
317
题解 | #按之字形顺序打印二叉树#
双栈法:用两个栈分别存奇数层和偶数层,入栈的顺序需要注意:奇数层从右往左,偶数层从左往右 class Solution { public: vector<vector<int> > Print(TreeNode* pRoot) { int n = 1...
C++
2021-12-01
0
188
题解 | #把数字翻译成字符串#
这题有点像跳箱子(一次跳一格或者两格) 如果按照跳箱子的做法,dp[n] = dp[n-2] + dp[n-1],从后往前递归,会超时(递归时间和空间都会超); 那么可以用从前往后的动态规划: 从前往后遍历,分类讨论当前元素i: 如果i == 0,那么前一个字符必须为1或者2,此时dp[i] = ...
C++
2021-11-30
0
249
题解 | #把数组排成最小的数#
贪心+排序:等于数组中任意两个字符串a,b,如果a + b < b + a, 显然我们希望a排在b的前面,因为a排在前面可以使结果更小。那么可以用内排序(插入,冒泡等)的方法,让局部的字符串最小(贪心)。 初始代码: public: string PrintMinNumber(vect...
C++
2021-11-30
0
312
题解 | #链表中环的入口结点#
1.初始化:快指针fast指向头结点, 慢指针slow指向头结点 2.让fast一次走两步, slow一次走一步,第一次相遇在C处,停止 3.然后让fast指向头结点,slow原地不动,让后fast,slow每次走一步,当再次相遇,就是入口结点。 如上解释: (为了便于分析,上图所展示的是假设快指...
C++
2021-11-28
0
227
题解 | #两个链表的第一个公共结点#
√双指针法: 将两个链表的非公共部分加成一样长(b+a=a+b) public: ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) { ListNode *ta = pHead1, *tb =...
C++
2021-11-25
0
221
题解 | #单链表的排序#
1.如果不限制空间大小,直接遍历一遍链表,把数据拿出来排好序后再放回原链表。空间O(n),时间可以到O(nlgn)2.如果限制空间大小O(1),那么可以直接在链表上进行排序,选择排序比较好写,但是时间上得到O(n*n),这道题过不了 注意:哨兵的设置,可以有效的减少不必要的操作 class Solu...
2021-06-06
0
366
首页
上一页
1
2
3
下一页
末页