摘要: 根据一棵树的前序遍历与中序遍历构造二叉树。 注意:你可以假设树中没有重复的元素。 例如,给出 返回如下的二叉树: 第一眼看到这题我就懵逼了,wtf??? 但是仔细想一下虽然复杂,但是很简单。。。前序数组的结构为【根,左子树,右子树】,中序数组结构为【左子树,根,右子树】,那么先从前序数组确定根,然后 阅读全文
posted @ 2018-07-17 16:21 onlyandonly 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 例如:给定二叉树 [3,9,20,null,null,15,7], 返回锯齿形层次遍历如下: 其实就是用两个栈,存储的时候用一个栈,遍历的时候倒进另一个栈。 当时的写法我真是佩服 阅读全文
posted @ 2018-07-16 18:54 onlyandonly 阅读(1249) 评论(0) 推荐(0) 编辑
摘要: 给定一个二叉树,返回它的中序 遍历。 示例: 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 递归是真的简单。迭代的话用栈就可以了,我做的时候主要的问题是怎么才能保证循环的时候不再访问到之前的节点,因为头疼想了很久。。。其实只要每次加一个指针就好了。。这个指针不为空就入栈,然后指向节点的左子树, 阅读全文
posted @ 2018-07-16 16:32 onlyandonly 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 编写一个程序,找到两个单链表相交的起始节点。 例如,下面的两个链表: 在节点 c1 开始相交。 注意: 如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。 又是一个简化时间复 阅读全文
posted @ 2018-07-16 15:01 onlyandonly 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。 示例 1: 示例 2: 说明: 应当保持奇 阅读全文
posted @ 2018-07-16 14:35 onlyandonly 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例: 非常简单的链表合并,注意一下最后的进位也要加进去。 这题主要是代码优化,按照我以前看的那本数据结构书,我要写3个wh 阅读全文
posted @ 2018-07-16 10:39 onlyandonly 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 给定一个未排序的数组,请判断这个数组中是否存在长度为3的递增的子序列。 正式的数学表达如下: 要求算法时间复杂度为O(n),空间复杂度为O(1) 。 示例:输入 [1, 2, 3, 4, 5],输出 true. 输入 [5, 4, 3, 2, 1],输出 false. 致谢:特别感谢 @Django 阅读全文
posted @ 2018-07-15 22:06 onlyandonly 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。 示例 1: 示例 2: 这条题的思路主要是从一个或两个字符开始往两边遍历,直到遍历出最长的回文字符串为止。 问题就出来这个从一个字符还是两个字符开始了。。开始弄了好几个条件,结果递归算一下发现靠控制条件要控到十万 阅读全文
posted @ 2018-07-15 21:35 onlyandonly 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 给定一个字符串,找出不含有重复字符的最长子串的长度。 示例: 给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。 给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。 给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串, 阅读全文
posted @ 2018-07-15 19:40 onlyandonly 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 这条题目应该是典型的算法优化题了吧。从方法到循环语句到判断条件,几乎每个地方都要写得完美才不会TL 阅读全文
posted @ 2018-07-15 17:19 onlyandonly 阅读(115) 评论(0) 推荐(0) 编辑