摘要:
思路很简单,出口是空节点,先翻转子节点,再返回。TreeNode* invertTree(TreeNode* root) { if (root == nullptr){ return root; } invertTree(root->left); ... 阅读全文
摘要:
我的思路很简单,就是这样:bool check(int n){ while (n != 2) { if (n % 2 != 0) { return false; } n /= 2; } return true;}boo... 阅读全文
摘要:
这个其实并不难,只是前期有点恶心,因为可能两边都没小数点,又可能只有一边有小数点,还有可能两边都有,真尼玛麻烦死了。我的策略很简单,先是根据传入的 string 把它按照小数点用递归的方法分割成若干段,存入容器中,再用迭代的方法比较两个容器就行了。那么怎么处理有时可能没有小数点的情况呢?我的解决办法... 阅读全文
摘要:
要判断是否是回文链表这本身不难,难就难在对那两个复杂度的要求太恶心了。我一开始的想法是先找出链表的中点,再向两边遍历,以右结点为空作为循环结束的条件。感觉挺好哈,可是这特么是单向链表。然后我琢磨像 12321 这样的有一个特点,就是 1 + 3 = 2 + 2 = 3 + 1 觉得我特么简直就是天才... 阅读全文
摘要:
这道题一开始我有点迷,有点搞不清平衡树的意思,虽然查了百度百科,但还是觉得不是十分的透彻,这让我耽误了许多时间。后来在看了一些博客后,我突然醒悟,什么是平衡二叉树?就是头结点的两个子树是平衡二叉树,且两个子树高度不超过 1。这句话就是一个递归。定义平衡二叉树已经确定可以用递归来处理,那么高度怎么求呢... 阅读全文
摘要:
这个问题对我而言,难点就是当我用递归函数遍历各个结点时,不同子树的同一层结点怎样让他们保存在同一个容器里。保存在同一个容器里说明他们有共同的属性,没错,就是层数。而层数又相当于就是返回值的索引,那就简单了,就让他们存在索引相同的数组里。那么就又衍生了一个问题,就是保存在同一个索引的数组的前提是存在这... 阅读全文
摘要:
这个问题的思路就是,通过后序遍历找到头结点,然后在中序遍历中划分子树, 再对子树执行相同的操作,直至子树为空。而我之前的方法是在细节上比较粗(wu)暴(nao) 因此效率过于低下。更详细的过程就是,根据后序遍历找到头结点,再在中序遍历中划分子树,而根据中序遍历中划分的子树大小,又可以作为偏移量来对后... 阅读全文
摘要:
long long unsigned factorial(long long unsigned num){ return num factorial; factorial = [&factorial](decltype(num) n){return n < 2LL? 1LL : (fa... 阅读全文