04 2017 档案
摘要:方法:别弄反数字之间的位置关系就可以了
阅读全文
摘要:方法:在栈中直接记录字符串的下标更加方便
阅读全文
摘要:方法:直接使用栈的数据结构对相关字符处理即可
阅读全文
摘要:Valid Anagram:注意所有字符都需要利用到
阅读全文
摘要:class Solution { public: string countAndSay(int n) { string ret = "1"; for(int i=1; i<n; ++i) ret = generateNext(ret); return ret; } string genera...
阅读全文
摘要:方法:注意罗马数字的分布即可 Roman to Integer规则:
阅读全文
摘要:方法:最每一个子串分别遍历,取最长子串
阅读全文
摘要:方法:与substring的不同是这里不需要子串连续 或者
阅读全文
摘要:class Solution { public: int longestPalindrome(string s) { unordered_map hashTable; for(int i=0; i::iterator iter; bool flag = false; for(iter = hashTable.begin();...
阅读全文
摘要:最简单的可以采用暴力解法,时间复杂度O(n^3),但时间会溢出 方法:使用动态规划的方法 方法二:采用向两边扩展的方法
阅读全文
摘要:class Solution { public: string addBinary(string a, string b) { int n = a.size() > b.size() ? a.size() : b.size(); reverse(a.begin(), a.end()); reverse(b.begin(), b.end())...
阅读全文
摘要:方法一:使用基本的遍历算法 方法二:使用KMP算法
阅读全文
摘要:class Solution { public: bool isPalindrome(string s) { transform(s.begin(), s.end(), s.begin(), ::tolower); int lt = 0, rt = s.size()-1; while(lt = 0) { ...
阅读全文
摘要:方法:使用递归的思想 更简单的递归写法:
阅读全文
摘要:方法:采用递归的方式
阅读全文
摘要:方法:递归的方式,这里使用一个变量记录cur保存遍历过程中的变量,类似于前序遍历 同样,对应path sum III问题,使用前序遍历的方式
阅读全文
摘要:方法一:基于递归的方式 方法二:使用递归的方式 Maximum depth of binary tree方法和minimum相同 方法一:递归 方法二:迭代:
阅读全文
摘要:方法一:最简单的方法是将列表中的数字存储在vector中,那么方法同上 方法二:基于列表遍历的方式,这里需要注意当遍历右子树时,lt=0而不是mid+1;
阅读全文
摘要:方法:使用递归的方式
阅读全文
摘要:方法一:使用递归的方式直接进行判断,也即对于每个节点,其值需要大于左子树最大节点,小于右子树最小节点,但这种方法在leetcode中不能accepted,因为测试集中节点的值有INT_MIN和INT_MAX。。。 对于上面方法,更简单的写法如下: 方法二:采用中序遍历的方式,若遍历得到的结果呈递增顺
阅读全文
摘要:方法:这里使用递归的方式
阅读全文
摘要:这里需要总结规律: f(0)=f(1)=1; f(2)=f(0)*f(1) + f(1)*f(0) f(3)=f(0)*f(2) + f(1)*f(1) + f(2)*f(0)
阅读全文
摘要:方法和依据前序和中序遍历确定二叉树一致。
阅读全文
摘要:这里使用递归的算法,特别需要递归中边界的判断
阅读全文
摘要:以下两种方法均适用于任意结构的树 方法一:使用栈的数据结构 方法二:基于层次遍历的方法,使用指针记录下一层首先遍历的节点
阅读全文
摘要:方法一:采用递归的方法 方法二:采用给非递归的方法,基于栈数据结构
阅读全文
摘要:方法一:使用递归的方法,使用一个变量记录以当前节点的左右节点为根节点的子树是否是平衡树,同时根据树的深度判断当前树是否为平衡树。
阅读全文
摘要:方法一:使用非递归的方式,基于前序遍历的方法,与sametree方法的不同在于symmetric需要一个从做节点遍历,一个从右节点遍历 方法二:使用递归的方法,与sametree方法类似
阅读全文
摘要:方法一:使用递归的方法 方法二:使用非递归的方法,前序遍历一一比较
阅读全文
摘要:方法一:递归的方法,使用一个flag记录不同层次的遍历顺序,这里需要注意使用vector中insert操作 方法二:非递归方法,使用队列数据结构
阅读全文
摘要:方法一:最简单的方式是traversal I 中的结果直接reverse就可以 同样可以采用递归的方式 方法二:这个题目除了可以使用栈数据结构,也可以使用队列数据结构
阅读全文
摘要:思路一:使用非递归方式,当时还是需要注意每当一个算法写完后,检查是否处理到根节点或者list为空的情况 思路二:采用递归的方式,这里使用一个额外参数记录了层次遍历的深度
阅读全文
摘要:思路一:递归版本 思路二:非递归版本,前序遍历中使用了一个额外的指针,这里使用times记录节点出栈的次数,更加方便直观
阅读全文
摘要:思路一:递归版本 思路二:非递归版本,一般二叉树的中序遍历需要记录节点出栈的次数,在中序遍历中,当节点第二次出栈时才输出对应值,这里巧妙的使用一个额外的指针实现了这个功能 以上两种方法的时间和空间复杂度都是O(n); 思路三:使用Morris方法中序遍历,空间复杂度是O(1)
阅读全文
摘要:思路一:采用递归的方法,每个节点访问一遍,时间复杂度O(n),空间复杂度O(n) 思路二:非递归实现,过程中使用了栈,时间和空间复杂度同上 思路三:采用morris遍历方式,时间复杂度同上,但是空间复杂度O(1):算法理解在此 关键在于将当前子树的中的最大值(最后遍历)的右指针指向根节点,以便于左边
阅读全文

浙公网安备 33010602011771号