lettCode
文章平均质量分 63
qq_15037067
爱好算法,
展开
-
leetCode 数值
1 Reverse Integer 描述:整数反转 记忆:判断最小,反转public int reverseInteger(int n) { // Write your code here if (n == Integer.MIN_VALUE) { return 0; } int num =原创 2016-12-11 21:26:33 · 156 阅读 · 0 评论 -
Binary Tree Preorder Traversal
题目 Given a binary tree, return the preorder traversal of its nodes’ values. 给出一棵二叉树,返回其节点值的前序遍历解题思路 递归方式:返回根节点,遍历左,遍历右,当节点为空时递归结束 public ArrayList<Integer> preorderTraversal(TreeNode root) {原创 2016-12-11 23:22:00 · 165 阅读 · 0 评论 -
3Sum Closest
题目 Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. 给一个包含 n 个整数的数组 S, 找到和与给定整数 target 最接近的三元组,返原创 2016-12-14 17:32:51 · 204 阅读 · 0 评论 -
Binary Tree Inorder Traversal
题目: Binary Tree Inorder Traversal Given a binary tree, return the inorder traversal of its nodes’ values. 给出一棵二叉树,返回其中序遍历算法 递归:先遍历左节点,访问跟节点,遍历右节点 public ArrayList<Integer> inorderTraversal(Tree原创 2016-12-12 13:18:38 · 207 阅读 · 0 评论 -
Binary Tree Postorder Traversal
题目 Binary Tree Postorder Traversal Given a binary tree, return the postorder traversal of its nodes’ values. 给出一棵二叉树,返回其节点值的后序遍历。算法 递归:先遍历左节点,遍历右节点,访问跟节点 public ArrayList<Integer> postorderTra转载 2016-12-12 21:00:26 · 161 阅读 · 0 评论 -
Binary Tree Level Order Traversal
题目 Binary Tree Level Order Traversal Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level). 给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)算法 采用宽度优先搜索算法原创 2016-12-12 22:54:44 · 178 阅读 · 0 评论 -
lettCode 数组
Merge Sorted Array 154 描述:合并两排好序数组 记忆:三标记,从后扫描,小剩继续public void mergeSortedArray(int[] a, int m, int[] b, int n) { // write your code here if (a == null || b == null) {原创 2016-12-04 21:23:58 · 259 阅读 · 0 评论 -
Minimum Depth of Binary Tree
题目 Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node. 给定一个二叉树,找出其最小深度。二叉树的最小深度为根节点到最近叶子节点的原创 2016-12-13 14:39:04 · 220 阅读 · 0 评论 -
Merge Two Sorted Lists
题目 Merge two sorted (ascending) linked lists and return it as a new sorted list. The new sorted list should be made by splicing together the nodes of the two lists and sorted in ascending order. 将两个排原创 2016-12-15 22:12:37 · 211 阅读 · 0 评论 -
Two Sum
题目 Given an array of integers, find two numbers such that they add up to a specific target number 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0原创 2016-12-14 11:14:59 · 174 阅读 · 0 评论 -
Letter Combinations of a Phone Number
题目 Given a digit string excluded 01, return all possible letter combinations that the number could represent. 给一个不包含01的数字字符串,每个数字代表一个字母,请返回其所有可能的字母组合。 算法 非递归:依次读取数字,然后把数字可以代表的字符依次加到当前的所有结果中,然后进入下一次迭原创 2016-12-16 21:09:32 · 351 阅读 · 0 评论 -
Valid Parentheses
题目 给定一个字符串所表示的括号序列,包含以下字符: ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, 判定是否是有效的括号序列。算法 这一题用栈解比较容易,步骤是遇到左括号就进栈,遇到右括号就看栈顶左括号是否匹配,匹配继续,不匹配就返回false public boolean isValidParentheses(String s) { // Writ原创 2016-12-16 22:32:06 · 170 阅读 · 0 评论 -
Merge k Sorted Lists
1.题目合并k个排序链表,并且返回合并后的排序链表。尝试分析和描述其复杂度。2.算法原创 2016-12-17 18:58:26 · 195 阅读 · 0 评论 -
3Sum
题目 Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. 给出一个有n个整数的数组S,在S中找到三个整数a, b, c,找到所有使得a +原创 2016-12-14 16:12:44 · 152 阅读 · 0 评论 -
Search in Rotated Sorted Array
1.题目假设有一个排序的按未知的旋转轴旋转的数组(比如,0 1 2 4 5 6 7 可能成为4 5 6 7 0 1 2)。给定一个目标值进行搜索,如果在数组中找到目标值返回数组中的索引位置,否则返回-1。你可以假设数组中不存在重复的元素。给出[4, 5, 1, 2, 3]和target=1,返回 2给出[4, 5, 1, 2, 3]和target=0,返回 -1原创 2016-12-21 20:41:13 · 194 阅读 · 0 评论 -
Search in Rotated Sorted Array II
1.题目跟进“搜索旋转排序数组”,假如有重复元素又将如何?是否会影响运行时间复杂度?如何影响?为何会影响?写出一个函数判断给定的目标值是否出现在数组中。2.算法给出[3,4,4,5,7,0,1,2]和target=4,返回 true public boolean search(int[] a, int target) { //原创 2016-12-21 21:16:30 · 176 阅读 · 0 评论 -
Search for a Range
1.题目给定一个包含 n 个整数的排序数组,找出给定目标值 target 的起始和结束位置。如果目标值不在数组中,则返回[-1, -1]给出[5, 7, 7, 8, 8, 10]和目标值target=8,返回[3, 4]2.算法这道题是二分查找的变体,还是用二分查找,不过用两次就行,一次找左边界,一次找右边界1,找左边界时,如果有,在边界上则判断原创 2016-12-21 21:55:51 · 194 阅读 · 0 评论 -
Same Tree
1.题目检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。2.算法这道题先序,中序,后序都可以完成,我们思考另一种解法,如果两个节点都为空,说明到头了,如果一个为空,另一个不为空,则两棵树不同,如果两棵树节点都有,并且值也相同,则遍历下一个节点,否则两树不同 public boolean isIdentic原创 2017-01-01 20:55:52 · 151 阅读 · 0 评论 -
Surrounded Regions
1.题目给一个二维的矩阵,包含 'X' 和 'O', 找到所有被 'X' 围绕的区域,并用 'X' 填充满给出二维矩阵:X X X XX O O XX X O XX O X X把被 'X' 围绕的区域填充之后变为:X X X XX X X XX X X XX O X X2.算法原创 2017-01-01 21:16:38 · 148 阅读 · 0 评论 -
Sum Root to Leaf Numbers
1.题目原题链接: http://oj.leetcode.com/problems/sum-root-to-leaf-numbers/2.算法用先序遍历的递归方式做 public int sumNumbers(TreeNode root) { return helper(root,0); } public int helper(TreeNode no原创 2017-01-02 10:12:29 · 165 阅读 · 0 评论 -
Longest Consecutive Sequence
1.题目给定一个未排序的整数数组,找出最长连续序列的长度。给出数组[100, 4, 200, 1, 3, 2],这个最长的连续序列是 [1, 2, 3, 4],返回所求长度 42.算法由于这道题需要算法复杂度为O(n),而很多排序算法复杂度为nlog(n),所以不适合用排序算法,而用hash来解决的方案,add, remove, contains 等方法的复杂度都是 O(1),所以原创 2017-01-02 10:30:31 · 157 阅读 · 0 评论 -
Binary Tree Maximum Path Sum
1.题目给出一棵二叉树,寻找一条路径使其路径和最大,路径可以在任一节点中开始和结束(路径和为两个节点之间所在路径上的节点权值之和)给出一棵二叉树: 1 / \ 2 3返回 62.算法 public int maxPathSum(TreeNode root) { // write your code转载 2017-01-02 11:24:35 · 220 阅读 · 0 评论 -
Word Ladder
1.题目给出两个单词(start和end)和一个字典,找到从start到end的最短转换序列比如:每次只能改变一个字母。变换过程中的中间单词必须在字典中出现。注意事项如果没有转换序列则返回0。所有单词具有相同的长度。所有单词都只包含小写字母。给出数据如下:start ="hit"end = "cog"d原创 2017-01-02 13:57:16 · 284 阅读 · 0 评论 -
Symmetric Tree
1.题目判断一个树是否为对称/镜像树2.算法算法一:递归,其中递归的结束条件是1,左为空,右不为空2,右为空,左不为空2.左右数不同 public boolean isSymmetric(TreeNode root) { if(root == null) return true; return helper(root转载 2017-01-02 14:53:10 · 229 阅读 · 0 评论 -
Triangle
1.题目给定一个数字三角形,找到从顶部到底部的最小路径和。每一步可以移动到下面一行的相邻数字上。比如,给出下列数字三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]从顶到底部的最小路径和为11 ( 2 + 3 + 5 + 1 = 11)。2.算法这道题是动态规划的题目,其中递推关系式是,某一个元素i,j的最小路径原创 2017-01-02 16:36:37 · 215 阅读 · 0 评论 -
Best Time to Buy and Sell Stock
1.题目假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。给出一个数组样例 [3,2,3,1,2], 返回 1 2.算法动态规划,从前往后扫描,记录当前出现过的最低价格,作为买入价格,并计算以当天价格出售的收益,作为可能的最大收益 public int ma原创 2017-01-02 16:39:53 · 146 阅读 · 0 评论 -
Best Time to Buy and Sell Stock II
1.题目假设有一个数组,它的第i个元素是一个给定的股票在第i天的价格。设计一个算法来找到最大的利润。你可以完成尽可能多的交易(多次买卖股票)。然而,你不能同时参与多个交易(你必须在再次购买前出售股票)。给出一个数组样例[2,1,2,0,1], 返回 22.算法从前向后遍历数组,只要当天的价格高于前一天的价格,就算入收益。public int maxProfit(int[]原创 2017-01-02 17:15:13 · 209 阅读 · 0 评论 -
Pascal's Triangle
1.题目产生n阶杨辉三角2.算法这道题是数组计算的题目,其中第i行的数为上行两相邻数的和,每行开始和结尾为1,代码如下 public ArrayList> generate(int numRows) { ArrayList> res = new ArrayList>(); if(numRows<=0) r原创 2017-01-02 19:07:29 · 152 阅读 · 0 评论 -
Pascal's Triangle II
1.题目求第n行的杨辉三角数2.算法我们只用一行空间,那么需要的数据就会被覆盖掉。所以这里采取的方法是从后往前扫,这样每次需要的数据就是res[i]+res[i-1],我们需要的数据不会被覆盖,因为需要的res[i]只在当前步用,下一步就不需要了。 public ArrayList getRow(int rowIndex) { ArrayList res = ne原创 2017-01-02 19:26:06 · 464 阅读 · 0 评论 -
Populating Next Right Pointers in Each Node
1.题目Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to NULL.Initially, all next pointers are set to NULL.2.算法原创 2017-01-02 20:08:51 · 190 阅读 · 0 评论 -
N-Queens
1.题目n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击。给定一个整数n,返回所有不同的n皇后问题的解决方案。每个解决方案包含一个明确的n皇后放置布局,其中“Q”和“.”分别表示一个女王和一个空位置。对于4皇后问题存在两种解决的方案:[ [".Q..", // Solution 1 "...Q", "Q.原创 2016-12-21 22:00:42 · 233 阅读 · 0 评论 -
Multiply Strings
1.题目Given two numbers represented as strings, return multiplication of the numbers as a string.The numbers can be arbitrarily large and are non-negative.Converting the input string to integer转载 2016-12-22 18:49:06 · 173 阅读 · 0 评论 -
Reverse Words in a String
1.题目给定一个字符串,逐个翻转字符串中的每个单词。单词的构成:无空格字母构成一个单词输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括如何处理两个单词间的多个空格?在反转字符串中间空格减少到只含一个给出s = "the sky is blue",返回"blue is sky the"2.算法 public String reverse原创 2016-12-22 20:21:50 · 177 阅读 · 0 评论 -
Longest Palindromic Substring
1.题目给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串。给出字符串 "abcdzdcab",它的最长回文子串为 "cdzdc"。2.算法原创 2016-12-23 22:01:38 · 184 阅读 · 0 评论 -
Trapping Rain Water
1.题目给出 n 个非负整数,代表一张X轴上每个区域宽度为 1 的海拔图, 计算这个海拔图最多能接住多少(面积)雨水。如上图所示,海拔分别为 [0,1,0,2,1,0,1,3,2,1,2,1], 返回 62.算法算法1:基本思路是维护一个数组,记录一个数左边和右边的最大高度的最小值,如上图所示第3个数是0,左边最大为1,右边最大高度为2取1,又由于第3个数为0则能接1面积雨水。原创 2016-12-24 10:48:41 · 366 阅读 · 0 评论 -
Valid Sudoku
1.题目请判定一个数独是否有效。该数独可能只填充了部分数字,其中缺少的数字用 . 表示。下列就是一个合法数独的样例。2.算法用暴力方发,检测每一行,每一列,每个单元格是否合法public class Dept { public boolean isValidSudoku(char[][] board) { if (board == null || board.原创 2016-12-24 14:47:18 · 170 阅读 · 0 评论 -
Sudoku Solver
1.题目Write a program to solve a Sudoku puzzle by filling the empty cells.Empty cells are indicated by the character '.'.You may assume that there will be only one unique solution.A sudoku p原创 2016-12-24 15:18:14 · 195 阅读 · 0 评论 -
Combination Sum
1.题目给出一组候选数字(C)和目标数字(T),找到C中所有的组合,使找出的数字和为T。C中的数字可以无限制重复被选取。例如,给出候选数组[2,3,6,7]和目标数字7,所求的解为:[7], [2,2,3]给出候选数组[2,3,6,7]和目标数字7返回 [[7],[2,2,3]]2.算法这道题也是问题,方法仍然是N-Queens中介绍的套路。基本思路是先排原创 2016-12-24 16:24:49 · 207 阅读 · 0 评论 -
First Missing Positive
1.题目给出一个无序的正数数组,找出其中没有出现的最小正整数。如果给出 [1,2,0], return 3如果给出 [3,4,-1,1], return 22.算法算法的基本思路是利用数组的index作为数组本身的索引,把正数按照递增顺序放在数组中,即让A[0]=1, A[1]=2, A[2]=3, ... , 这样一来,最后如果哪个数组元素违反了A[i]=i+1即说明i+1就原创 2016-12-24 17:21:10 · 130 阅读 · 0 评论 -
Max Points on a Line
1.题目给出二维平面上的n个点,求最多有多少点在同一条直线上。给出4个点:(1, 2), (3, 6), (0, 0), (1, 3)。一条直线上的点最多有3个。2.算法基本算法是每次以一个点为基准,看后面的每个点和他所够成的直线,维护一个HashMap, key是跟这个点构成直线的斜率的值, 而value就是该斜率对应的点的数量, 计算它的斜率, 如果已经转载 2016-12-24 20:55:36 · 176 阅读 · 0 评论