leetcode
文章平均质量分 64
iteye_9083
这个作者很懒,什么都没留下…
展开
-
[leetcode]Same Tree - java 广度遍历
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */publi...2015-03-30 15:53:52 · 93 阅读 · 0 评论 -
[leetcode]Flatten Binary Tree to Linked List - java 先序遍历
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */publi...2015-03-10 15:30:35 · 126 阅读 · 0 评论 -
[leetcode]Path Sum II - java 回溯法
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */publi...2015-03-09 16:52:01 · 109 阅读 · 0 评论 -
[leetcode]Path Sum I - java
采用递归的方法,将累计的和值逐层下推 public boolean hasPathSum(TreeNode root, int sum) { return eSum(root, 0, sum); } private boolean eSum(TreeNode node, int s, int sum){ if(node == n...2015-03-09 16:50:59 · 71 阅读 · 0 评论 -
[leetcode]Populating Next Right Pointers in Each Node II - java
这道题有个点,即使用空间来对树进行分层,这个点对于不完全二叉树还是很常见的技巧/** * Definition for binary tree with next pointer. * public class TreeLinkNode { * int val; * TreeLinkNode left, right, next; * ...2015-01-30 10:39:11 · 67 阅读 · 0 评论 -
[leetcode]Populating Next Right Pointers in Each Node - java 广度遍历
这题没啥难度,主要是仔细了/** * Definition for binary tree with next pointer. * public class TreeLinkNode { * int val; * TreeLinkNode left, right, next; * TreeLinkNode(int x) { ...2015-01-29 18:00:49 · 67 阅读 · 0 评论 -
[leetcode]Pascal's Triangle I II - java
这两道题没什么说的,就是杨辉三角形的性质public class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> triangle = new ArrayList<List<Int...2015-01-22 11:19:25 · 126 阅读 · 0 评论 -
[leetcode]Triangle - dp java
动态规划的1. 转移函数f[i][j]从top到第i排第j个元素的最小距离2. 考虑到边界问题,状态转移方程为int left = j-1<0?0:j-1;int right = j>i-1?i-1:j;f[i][j]=Math.min(f[i-1][left], f[i-1][right])+triangle.get(i).get(j); public ...2015-01-20 16:28:59 · 107 阅读 · 0 评论 -
[leetcode]Best Time to Buy and Sell Stock I II III - java O(n)
问题1比较简单, 使用一个pre变量,记录之前最小值就可以了public int maxProfit(int[] prices) { if (prices == null || prices.length == 0) { return 0; } int max = 0; int minPre =...2015-01-16 13:30:59 · 72 阅读 · 0 评论 -
[leetcode]Binary Tree Maximum Path Sum - java 后续遍历
这道题估计难在审题上,题目描述太简单了,导致提交各种情况没想到,整个代码比较简单,可以解释题目,采用递归后续遍历的方式,从叶子节点开始算起,每次计算产生两个值,一个是最大通路值(maxPathSum ),一个是子树能为父节点提供的最大单支值(findSingleBranchMaxPathSum递归返回的值) /** * Definition for binary tree * ...2015-01-14 10:59:45 · 91 阅读 · 0 评论 -
[leetcode]Minimum Depth of Binary Tree-java 广度遍历
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */publi...2015-03-10 16:08:07 · 70 阅读 · 0 评论 -
[leetcode]Balanced Binary Tree - java 递归
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */publi...2015-03-10 16:29:53 · 83 阅读 · 0 评论 -
[leetcode]Symmetric Tree - java
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */publi...2015-03-27 17:54:20 · 90 阅读 · 0 评论 -
[leetcode]Construct Binary Tree from Inorder and Postorder Traversal - java
根据后序集合找到根,再根据根,在中序集合中找到索引号,采用递归的构建子树的方法/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(in...2015-03-26 18:02:57 · 100 阅读 · 0 评论 -
[leetcode]Construct Binary Tree from Preorder and Inorder Traversal - java
根据先序集合找到根,再根据根,在中序集合中找到索引号,采用递归的构建子树的方法/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(in...2015-03-26 18:01:20 · 86 阅读 · 0 评论 -
[leetcode]Maximum Depth of Binary Tree - java 递归
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */publ...2015-03-26 16:07:25 · 120 阅读 · 0 评论 -
[leetcode]Binary Tree Zigzag Level Order Traversal - java
这个提跟Binary Tree Level Order Traversal 一样,只是结果集用栈/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * T...2015-03-26 15:49:48 · 83 阅读 · 0 评论 -
[leetcode]Binary Tree Level Order Traversal II - java
这个提跟Binary Tree Level Order Traversal 一样,只是结果集用栈 /** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; *...2015-03-26 15:21:40 · 109 阅读 · 0 评论 -
[leetcode]Binary Tree Level Order Traversal - java 树层遍历技巧
广度遍历的基础上,再使用是个集合存储下一层节点,在队列进元素的时机上做出一些改变,就能达到层级遍历树的效果 /** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; ...2015-03-17 13:54:00 · 83 阅读 · 0 评论 -
[leetcode]Convert Sorted Array To Binary Search Tree - java 递归
递归生成二叉查找树/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } ...2015-03-11 17:45:31 · 79 阅读 · 0 评论 -
[leetcode]Convert SortedList To Binary Search Tree - java 递归
递归构造二叉查找树 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; next = null; } * } *...2015-03-11 17:39:23 · 106 阅读 · 0 评论 -
[leetcode]Word Ladder - java 深度和广度遍历
这道题可以考虑两种方式解决1. 深度优先遍历2. 广度优先遍历 其中算法的效率取决于数组中单词的顺序,如果解决方案靠前,那么深度优先所用时间短;如果解在中间的位置,那么广度优先用时较短 深度优先采用回溯递归调用的方式public int ladderLengthTraceback(String start, String end, Set<String>...2015-01-07 11:03:40 · 70 阅读 · 0 评论 -
[leetcode]Longest Consecutive Sequence - o(N) java
package leetCode;import java.util.HashMap;import java.util.Map;/** * User: FR * Time: 1/4/15 6:01 PM * * Given an unsorted array of integers, find the length of the longest consecut...2015-01-05 14:47:05 · 76 阅读 · 0 评论 -
[leetcode]Linked List Cycle-判断链表是否有环 java
/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */...原创 2014-10-28 13:33:10 · 74 阅读 · 0 评论 -
[leetcode]Reorder List-java
注意以下几点1. 传入为空 由于题目要求比较宽泛,所以采用以下两种方式解答1. 用空间降低复杂度,使用list存储,借助数组编号寻址,重组链表/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListN...原创 2014-10-27 14:53:16 · 77 阅读 · 0 评论 -
[leetcode]Binary Tree Preorder Traversal-先序遍历 java
注意以下几点1. 输入为null时,返回空list,题目没有说 /** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x...原创 2014-10-23 17:36:52 · 73 阅读 · 0 评论 -
[leetcode]Binary Tree Postorder Traversal-二叉树后续遍历 java
注意以下几项1. 输入若为NULL,返回空列表,而不是NULL,题目没有说清楚 /** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) {...原创 2014-10-22 13:39:26 · 88 阅读 · 0 评论 -
[leetcode]LRU Cache-java
注意一下几项1. 借助linklist动态储存key的使用情况,将每次使用的key对应的节点变化到链表尾部,0位置为最少使用的key2. 题目对时间复杂度有要求,linklist获得某个key,需要用O(1)的map查找,而是O(n)的循环查找3. 根据以上两个条件,需要实现map+linklist的数据结构,linklist存储键值和最少用到的key,map根据key找到list...原创 2014-10-21 16:10:15 · 108 阅读 · 0 评论 -
[leetcode]Insertion Sort List-list 插入排序 java
注意以下几项1. 题目没有说按从小打到排序2. 排序的时候需要判断前驱为空,后继为空的情况 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * ...原创 2014-10-20 15:59:59 · 62 阅读 · 0 评论 -
[leetcode]Sort List-链表排序 java
注意一下几项1. nlogn时间复杂度,稳定的算法是堆排序和归并排序2. 常数地址空间,堆排序不合适,考虑归并排序的变种3. 注意链表查找中间节点的小算法 /** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ...原创 2014-10-17 15:24:55 · 63 阅读 · 0 评论 -
[leetcode]Valid Palindrome-回文验证 java
注意以下项1. 空字符串也是回文 public class Solution { public boolean isPalindrome(String s) { if(s.equals("")){ return true; } s = s.toLowerCase(); Str...原创 2014-10-16 19:16:45 · 82 阅读 · 0 评论 -
[leetcode]Evaluate Reverse Polish Notation-后序表达式计算 java
注意以下几点1. 原始字符数组输入的顺序,将字符装入list后,需要从第一个字符开始pop,所以代码使用add2. 使用两个list进行计算3. 遇到操作符后,运算的两个数字是有序的,代码中为a,b的运算顺序public class Solution { public int evalRPN(String[] tokens) { List<S...原创 2014-10-15 17:47:40 · 93 阅读 · 0 评论 -
[leetcode]Linked List Cycle II-找链表环起始点(修正版)java
很多网上的算法指根据结论倒推出a=c这样的结论,是错误的!这道题比较注重数学推到, 如图,设置快慢两个指针,快指针的速度是慢指针的两倍假设两个指针在z点相遇,那么快指针所走过的距离是慢指针的两倍那么有以下公式,其中n代表快指针在环内转了n圈后行走b距离与慢指针相遇2*(a+b)= a + b + n*(b+c) ====> a = (n-1)(b+c) + c由...原创 2014-10-30 15:21:41 · 98 阅读 · 0 评论 -
[leetcode]Word Break-dp 动态规划解, java
dp解决方案,状态转移方程f[i]代表字符串第i位能否被分割f[i]=(f[j]&&s.substring(j+1,i+1))||(f[j]&&s.substring(j+2,i+1))||... public class Solution { public boolean wordBreak(String s, Set<...2014-12-01 13:25:24 · 133 阅读 · 0 评论 -
[leetcode]Sum Root to Leaf Numbers - java 回溯 深度遍历
主要是回溯算法结合树的深度遍历 /** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */pub...原创 2014-12-31 17:47:40 · 117 阅读 · 0 评论 -
[leetcode]Palindrome Partitioning II - java 动态规划
最优解问题,直观想到动态规划来解,那么首先是找到状态方程假设f[i]代表0-i的数组长度内的最小切分,那么有以下转移条件1. 0-i 整体为回文,那么f[i]=02. 0-i 不是回文, 那么必然存在0<j<=i 是的j-i 是回文, 那么对这个集合求最小值f[i]=min{f[j-1]+1},0<j<=i 注意红色部分初始化代码的技巧,普通的...2014-12-30 17:57:25 · 61 阅读 · 0 评论 -
[leetcode]Palindrome Partitioning - java 回溯
一般的回溯算法问题public class Solution { public List<List<String>> partition(String s) { List<List<String>> allResults = new ArrayList<List<String>>(); ...2014-12-29 17:12:10 · 101 阅读 · 0 评论 -
[leetcode]Gas Station - java
两种解法1. 两层遍历,直观取得结果 --- 时间复杂度高 ,不过, 但如果要求返回所有满足的位置,可以用这种方法2. 题目只要求返回一个结果即可,那么有以下两个条件,即满足题意a. ∑gas[i] >= ∑cost[i] b. 从cost[i]-gas[i]的负数最小的地方,往后找到第一个cost[i]-gas[i]>0的index,则此位置即满足要求 第一...2014-12-25 10:45:50 · 71 阅读 · 0 评论 -
[leetcode]candy-java
两次遍历,第一遍将大于等于序列的糖果分好,第二遍反向遍历,将小于序列的糖果分好需要注意两点1. 等于的情况,后一个孩子的糖果为12. 反向遍历的时候,到已经分了糖果的边界孩子时,需要判断,反向自增的糖果和此孩子之前分的糖果哪个大,取大值 public class Solution { public int candy(int[] ratings) { ...2014-12-24 15:28:39 · 157 阅读 · 0 评论 -
[leetcode]Single Number II - java
分别存储每一个bit位1出现的次数,然后对3取模public class Solution { public int singleNumber(int[] A) { int[] bitNum = new int[32]; int result =0; for (int j = 0; j < 32; j++) { ...2014-12-23 10:44:49 · 79 阅读 · 0 评论