摘要: 翻转二叉树,2种方案,递归与非递归 (个人更喜欢非递归的方案,大多数情况下非递归的迭代都拥有更低的时空间复杂度,当然也存在 傅里叶快速变换那种小而美的递归方案,见仁见智吧) 1. 递归(深度优先遍历方案) 此方案中,我们会直接从最顶层父节点,一路递归至最左侧叶子节点, 然后再递归至其父节点的右孩子, 阅读全文
posted @ 2021-04-06 18:28 jchen104 阅读(237) 评论(0) 推荐(0)
摘要: 首先复习下二叉搜索树BST的概念,总结一下就是 1.若任意结点的左子树不空,则左子树上所有结点的值均不大于它的根结点的值。2. 若任意结点的右子树不空,则右子树上所有结点的值均不小于它的根结点的值。3.任意结点的左、右子树也分别为二叉搜索树 参考了下大佬的解答, 如果两个节点值都小于根节点,说明他们 阅读全文
posted @ 2021-04-06 16:55 jchen104 阅读(49) 评论(0) 推荐(0)
摘要: 这题可以利用双指针倒排得办法。 我们创建3个指针,分别指向p1,p2分别指向数组1,2得末尾,p3指向数组1得末尾。 从后向前数组遍历nums1,从尾部值开始比较遍历,迭代比较值大小之后,使用较大得元素对nums1[p3]进行填充,当 p1<0 时遍历结束,此时 nums2 中可能存在数据未拷贝完全 阅读全文
posted @ 2021-04-06 15:52 jchen104 阅读(72) 评论(0) 推荐(0)
摘要: 比较简单得题目,一次迭代可以得出结果 时间O(n),空间O(1) public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode l3 = new ListNode(),l4=l3; while (l1!=null && l2!= 阅读全文
posted @ 2021-04-06 15:05 jchen104 阅读(35) 评论(0) 推荐(0)
摘要: 使用迭代得方法,用3个指针,分别指向后一个元素,当前元素和前一个元素, null->1->2,flow=null,curr=1,prev=2,迭代时将flow指向curr得next,再将flow指向curr, 最后将prev覆盖curr即可。时间O(n),空间O(1) public ListNode 阅读全文
posted @ 2021-04-06 15:00 jchen104 阅读(32) 评论(0) 推荐(0)
摘要: 1. 条件断点(suspend when 'true') 如果你不知道如何添加断点,只需点击左边面板(行号前面)断点即被创建。在调试界面中,“断点”视图会把所有被创建的断点列出来。 我们可以给它加一个布尔条件,也就是说,该断点会被激活并且如果布尔条件为真,就会执行该断点,否则将会跳过往下执行。 另一 阅读全文
posted @ 2021-04-06 11:36 jchen104 阅读(149) 评论(0) 推荐(0)