分类: 力扣

16 篇文章

二叉树Part05
654.最大二叉树 思路 没啥特别的思路,前序遍历加递归即可 注意 顾名思义,begin()就是指向容器第一个元素的迭代器 如果你是初学者,你可能会猜到 end()是指向容器最后一个元素的迭代器, 但事实并非如此,实际上,end()是指向容器最后一个元素的下一个位置的迭代器 如果不做判断,就会出现溢…
二叉树Part04
513.找树左下角的值 题目描述:给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。 我的解法(迭代法) 思路 用层序遍历,每一层只保存最左边的值,每遍历一层再更新。 层序遍历 我的写法 个人感觉是不能通过的,但是还是跑通了?? 下面的写法是…
二叉树Part03
110.平衡二叉树 题目描述:给定一颗二叉树,判断它是否是平衡二叉树。 递归法 后序遍历 本题适合采用后序遍历,先遍历完左右子树,从底部开始累加高度。 后序遍历 class Solution { public: int getHight(TreeNode *node) { // 终止条件 if (!…
二叉树Part02
226.翻转二叉树 初印象: 感觉层序遍历一遍再倒过来就好了... 思路 实际上只要遍历每个节点并反转其左右孩子就可以了,因此用其他遍历方法都能做,除了递归法的中序遍历做不了,因为递归法的中序遍历会将某些节点的左右孩子翻转两次(按照左中右的顺序的话,先判断左,翻转,在判断右,这样的话此时的右就是刚刚…
二叉树Part01
二叉树的种类 完全二叉树 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层(h从1开始),则该层包含 1~ 2^(h-1) 个节点。 满二叉树 二叉搜索树 前面介绍的树,都没有数值的,…
栈与队列Part02
前置知识 用到了stoi(),以及to_string()两个函数 头文件#include<cstring> stoi() 和 atoi() stoi 的参数是 const string* 类型 atoi 的参数是 const char* 类型 stoi() 会对转化后的数进行检查,判断是…
栈与队列part01
关于栈和队列 STL 中的 stack 容器提供了一众成员函数以供调用,其中较为常用的有: 元素访问 st.top() 返回栈顶 修改 st.push() 插入传入的参数到栈顶 st.pop() 弹出栈顶 容量 st.empty() 返回是否为空 st.size() 返回元素数量 STL 中的 st…
字符串Part02
151.翻转字符串里的单词 这一题主要的难点其实在于移除多余的空格. 如果想要让空间复杂度位O(1),也就是不采用辅助空间的话,我们应该想到双指针法. 整体思路大概是,快指针定位到单词的位置,再将单词插入慢指针所指向的位置,除了慢指针指向开头时,每次将快指针的值(也就是单词)赋给慢指针时,要先加一个…
字符串Part01
344.反转字符串 class Solution { public: void reverseString(vector<char> &s) { for (int i = 0, j = s.size() - 1; i < s.size() / 2; i++, j--) { …
哈希表Part02
前置知识 C++中map,有三种类型: 映射 底层实现 是否有序 数值是否可以重复 能否更改数值 查询效率 增删效率 std::map 红黑树 key有序 key不可重复 key不可修改 O(log n) O(log n) std::multimap 红黑树 key有序 key可重复 key不可修改…