摘要:题目链接 题目大意:后序遍历二叉树。 法一:普通递归,只是这里需要传入一个list来存储遍历结果。代码如下(耗时1ms): 1 public List<Integer> postorderTraversal(TreeNode root) { 2 List<Integer> list = new Ar
阅读全文
摘要:题目链接 题目大意:返回二叉树的先序遍历list。中序见94,后序见145。 法一:普通递归遍历,只是这里多了一个list数组,所以分成了两个函数。代码如下(耗时1ms): 1 public List<Integer> preorderTraversal(TreeNode root) { 2 Lis
阅读全文
摘要:题目链接 题目大意:141题目的扩展,给出单链表,判断是否有环,如果有环,找出环的开始的结点,如果没有环,返回null。 法一(借鉴):在已经找出单链表环的基础上再找开始结点,要时刻记住这个环不一定是从尾结点到头结点,有可能是中间的某一段。所以对于这里具体路径的分析,有两个博客可看http://bl
阅读全文
摘要:题目链接 题目大意:给出第几行,返回杨辉三角里的该行数据。要求空间复杂度o(k) 法一:这里用一个list数组实现,就会导致所有数据存在一个list中,无法分辨的问题,所以后来要新开一个list从前面的list中抽取出最后的结果数据。空间复杂度不是o(k),代码如下(耗时3ms): 1 public
阅读全文
摘要:题目链接:https://leetcode.com/problems/pascals-triangle/description/ 题目大意:给出杨辉三角的行数,打印其杨辉三角。例子如下: 法一:直接模拟(传说这就是dp),杨辉三角的规律是:每个数都是其上两个元素的和。注意内层的list在每一次for
阅读全文
摘要:题目链接:https://leetcode.com/problems/path-sum/description/ 题目大意:给出一个二叉树和一个数字,求出是否有从根节点到叶节点的路径上的数之和等于这个数字,如果有返回true,否则返回false。 法一:利用先序遍历的思想,先对结点值进行加和然后再递
阅读全文
摘要:题目链接:https://leetcode.com/problems/convert-sorted-list-to-binary-search-tree/description/ 题目大意:将升序单链表转换为平衡二叉排序树。 法一(借鉴):利用108的二分思想,只是这里单链表没法直接拿到下标,所以每
阅读全文
摘要:题目链接:https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/description/ 题目大意:将一个升序数组转换成平衡二叉排序树。 法一(借鉴):一看到平衡二叉,就懵了,以为是用平衡转换来做,直接看了题
阅读全文
摘要:题目链接:https://leetcode.com/problems/valid-parentheses/description/ 题目大意:简单的括号 匹配问题。 法一:栈,代码如下(耗时 9ms): 1 public boolean isValid(String s) { 2 char[] st
阅读全文
摘要:题目链接:https://leetcode.com/problems/add-binary/description/ 题目大意:给出两个二进制数,输出其相加结果,结果仍用二进制表示。 法一:直接模拟大数加法,(http://www.cnblogs.com/cing/p/7747957.html这个题
阅读全文
摘要:题目链接:https://leetcode.com/problems/n-queens-ii/description/ 题目大意:返回N皇后的所有解的个数。 法一:直接用51题的代码,只是返回值变成list.size()即可,代码如下(耗时9ms): 1 public int solveNQueen
阅读全文
摘要:题目链接:https://leetcode.com/problems/n-queens/description/ 题目大意:N皇后问题,返回所有解序列,存入list中返回。 法一:深搜回溯,这里最关键的是if条件判断皇后放置问题,代码如下(只有9个测试用例,耗时10ms): 1 public Lis
阅读全文
摘要:题目链接:https://leetcode.com/problems/add-two-numbers/description/ 题目大意:给出两个单链表,表示两个数字,这两个数字中的每一位上的数字在单链表中都倒序存放,每个结点中都含有一个非负整数,计算这两个数字的和,要求倒序插入到单链表中并返回。例
阅读全文
摘要:题目链接:https://leetcode.com/problems/climbing-stairs/description/ 题目大意:爬楼梯问题,一共花费n步爬到楼顶,一次可以爬一个台阶或两个台阶,求出一共有多少种方法可以爬到楼顶。 此题其实是裴波那挈数列问题。 法一:动规公式:fib[n] =
阅读全文
摘要:题目链接:https://leetcode.com/problems/maximum-subarray/description/ 题目大意:给出一串数组,找出其最大连续子序列和,例子如下: 法一(超时):时间复杂度o(n^2),两层for循环,记录每一个数值后的连续序列的最大和,里层for循环记录当
阅读全文
摘要:题目链接:https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/description/ 题目大意:与122题类似,只是这里要求买卖次数只能有两次,计算两次总共的最大利润值。 法一(超时):计算某一天之前的最大利润值与某一
阅读全文
摘要:题目链接:https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/description/ 题目大意:基本定义与121类似,不同点:121买卖股票只能有一次,且在这所有的一次买卖中找出最大利润值;122买卖股票不限次数,要求在
阅读全文
摘要:题目链接:https://leetcode.com/problems/best-time-to-buy-and-sell-stock/description/ 题目大意:给出一串数组,找到差值最大的差值是多少,要求只能用下标大的减下标小的,例子如下图: 法一(超时):直接两个for循环,进行一一比较
阅读全文
摘要:题目链接 题目大意:给出一串数组,里面的数都是两个,只有一个数是一个,把这个只有一个的数找出来。时间复杂度最好是线性的,空间复杂度最好为O(1). 法一:利用map,空间换时间,代码如下(耗时26ms): 1 public int singleNumber(int[] nums) { 2 Map<I
阅读全文
摘要:题目链接 题目大意:给出一个链表,判断该链表是否有环,空间复杂度最好控制在o(1) 这个题没有给测试用例,导致没太明白题目意思,看了题解,用了两种方法示例如下: 法一(借鉴):利用两个指针,一个指针步长为2,一个指针步长为1,若链表中有环,则两个指针同时走,在某一时刻一定会走到一起;若链表中没有环,
阅读全文