
LeetCode
Mr_Curious_
自律、自律、自律、自律。要时刻保持奋发向上的精神面貌!!!
展开
-
303. 区域和检索 - 不可变
一、题意 Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive.Example: Given nums = [-2, 0, 3, -5, 2, -1]sumRange(0, 2) -> 1 sumRange(2, 5) -> ...原创 2018-04-15 22:13:37 · 1333 阅读 · 1 评论 -
144. 二叉树的前序遍历 94. 二叉树的中序遍历 145. 二叉树的后序遍历
给定一个二叉树,返回它的 前序 遍历。 示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?class Solution { public List<Integer> preorderTraversal(TreeNode root) { ...原创 2018-06-21 09:27:46 · 240 阅读 · 0 评论 -
653. 两数之和 IV - 输入 BST
给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。案例 1:输入: 5 / \ 3 6 / \ \2 4 7Target = 9输出: True案例 2:输入: 5 / \ 3 6 / \ \2 4 7Target = 28输...原创 2018-06-21 09:52:09 · 422 阅读 · 0 评论 -
653. 两数之和 IV - 输入 BST
给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。案例 1:输入: 5 / \ 3 6 / \ \2 4 7Target = 9输出: True案例 2:输入: 5 / \ 3 6 / \ \2 4 7Target = 28输...原创 2018-06-21 09:52:13 · 444 阅读 · 0 评论 -
112. 路径总和(树递归中的一点小收获_什么是子节点)
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例: 给定如下二叉树,以及目标和 sum = 22, 5. / \ 4. 8 / / \ 11. 13 ...原创 2018-06-06 17:47:57 · 578 阅读 · 0 评论 -
437. 路径总和 III(未解决)
给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8...原创 2018-06-06 20:58:42 · 184 阅读 · 0 评论 -
572. 另一个树的子树(和树的子结构异曲同工)
给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1:给定的树 s: 3 / \ 4 5 / \ 1 2给定的树 t: 4 / \ 1 2返回 true,因为 t 与 s 的一个子树拥有相同的结构和...原创 2018-06-06 21:43:00 · 254 阅读 · 0 评论 -
59 对称的二叉树 《剑指offer》 101. 对称二叉树《LeetCode》
题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { ...原创 2018-05-31 09:21:25 · 163 阅读 · 0 评论 -
110. 平衡二叉树 (思想很重要--两层递归) 二叉搜索树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,...原创 2018-06-07 10:54:20 · 1047 阅读 · 0 评论 -
50/235. 二叉搜索树的最近公共祖先
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5] _______6____...原创 2018-06-14 08:55:27 · 1461 阅读 · 0 评论 -
617 合并二叉树(带有返回值)
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入: Tree 1 Tree 2 1 ...原创 2018-06-05 08:40:16 · 375 阅读 · 0 评论 -
671. 二叉树中第二小的节点
给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值。 给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。示例 1:输入: 2 / \ 2 5 / \ 5 7输出: 5说明: 最小的值是 ...原创 2018-06-11 21:24:38 · 925 阅读 · 0 评论 -
27. 移除元素
一、题意 Given an array nums and a value val, remove all instances of that value in-place and return the new length.Do not allocate extra space for another array, you must do this by modifying the inpu...原创 2018-04-16 17:02:35 · 144 阅读 · 0 评论 -
35. 搜索插入位置
一、题意 Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.You may assume no duplicates in the ar...原创 2018-04-16 22:02:48 · 258 阅读 · 0 评论 -
67. 二进制求和
一、题意 给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1” 输出: “100” 示例 2:输入: a = “1010”, b = “1011” 输出: “10101”二、分析和解答 public String addBinary(String a, String b...原创 2018-04-17 19:05:59 · 510 阅读 · 0 评论 -
15. 三数之和(中等)
一、题意 给定一个包含 n 个整数的数组 S,是否存在属于 S 的三个元素 a,b,c 使得 a + b + c = 0 ?找出所有不重复的三个元素组合使三个数的和为零。注意:结果不能包括重复的三个数的组合。例如, 给定数组 S = [-1, 0, 1, 2, -1, -4],一个结果集合为: [ [-1, 0, 1], [-1, -1, 2] ] 二、分析和解答 ...原创 2018-04-06 22:37:58 · 3761 阅读 · 1 评论 -
69. x 的平方根
一、题意 实现 int sqrt(int x) 函数。计算并返回 x 的平方根。x 保证是一个非负整数。案例 1:输入: 4 输出: 2 案例 2:输入: 8 输出: 2 说明: 8 的平方根是 2.82842…, 由于我们想返回一个整数,小数部分将被舍去。二、分析和解答 一开始,最笨的做法,从0到n遍历,代码:public int mySqrt(int...原创 2018-04-18 22:15:34 · 3503 阅读 · 2 评论 -
104 二叉树的最大深度(****)
https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/description/class Solution { public int maxDepth(TreeNode root) { if(root == null) return 0; int leftre...原创 2018-06-04 21:34:31 · 212 阅读 · 0 评论 -
226. 翻转二叉树
https://leetcode-cn.com/problems/invert-binary-tree/description/class Solution { public TreeNode invertTree(TreeNode root) { if(root != null){ TreeNode tmp = root.right; ...原创 2018-06-04 21:39:30 · 112 阅读 · 0 评论 -
108. 将有序数组转换为二叉搜索树(高度平衡的)(low > high)的结束条件
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10...原创 2018-06-11 19:49:41 · 179 阅读 · 0 评论 -
543. 二叉树的直径(两节点的最长路径)
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意:两结点之间的路径长度是以它们...原创 2018-06-11 20:41:31 · 3311 阅读 · 0 评论 -
111. 二叉树的最小深度(***)
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.注意:它是到最近的叶子节点,要多考虑根节点class Solution ...原创 2018-06-07 12:48:23 · 475 阅读 · 0 评论 -
404. 左叶子之和(某递归形式)
计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24class Solution { int sum = 0; public int preSum(TreeNode root,TreeNode last) { if(roo...原创 2018-06-07 13:00:28 · 332 阅读 · 0 评论 -
669. 修剪二叉搜索树
给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。示例 1:输入: 1 / \ 0 2 L = 1 R = 2输出: 1 \ 2示例 2:输入: ...原创 2018-06-22 10:19:00 · 224 阅读 · 0 评论 -
413. 等差数列划分(***)
如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,以下数列为等差数列:1, 3, 5, 7, 97, 7, 7, 73, -1, -5, -9以下数列不是等差数列。1, 1, 2, 5, 7数组 A 包含 N 个数,且索引从0开始。数组 A 的一个子数组划分为数组 (P, Q),P 与 Q 是整数且满足 0<=P<Q<N...原创 2018-06-29 10:47:17 · 1537 阅读 · 1 评论 -
343. 整数拆分 正整数的和 ,乘积最大化 dp[i] = Math.max(dp[i],Math.max(j*dp[i-j],j*(i-j)));
给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。例如,给定 n = 2,返回1(2 = 1 + 1);给定 n = 10,返回36(10 = 3 + 3 + 4)。注意:你可以假设 n 不小于2且不大于58。class Solution { public int integerBreak(int n) { ...原创 2018-06-29 11:26:34 · 908 阅读 · 0 评论 -
513. 找树左下角的值(层次遍历的基本错误)
给定一个二叉树,在树的最后一行找到最左边的值。示例 1:输入: 2 / \ 1 3输出:1示例 2:输入: 1 / \ 2 3 / / \ 4 5 6 / 7输出:7注意: 您可以假设树(即给定的根节点)不为 NULL。clas...原创 2018-06-19 09:27:01 · 294 阅读 · 0 评论 -
动态规划习题_70、 爬楼梯_198、打家劫舍_213.、打家劫舍 II_母牛生产_信件错排(***)_64、最小路径和
爬楼梯(爬一爬二)假设你正在爬楼梯。需要 n 步你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 步 + 1 步2. 2 步示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 步 + 1 步 ...原创 2018-06-26 17:29:44 · 1289 阅读 · 0 评论 -
64 最小路径和(二维动态规划优化:压缩法)
64、最小路径和给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。class Solution { public int ...原创 2018-06-26 20:46:16 · 1614 阅读 · 2 评论 -
动态规划_62. 不同路径_53. 最大子序和
62、 不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m 和 n 的值均不超过 100。class Solution { pub...原创 2018-06-27 08:38:02 · 225 阅读 · 0 评论 -
300. 最长上升/递增子序列(Longest Increasing Subsequence)y优化不是很明朗 复习二分查找
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?clas...原创 2018-07-16 14:34:09 · 298 阅读 · 0 评论 -
376. 摆动序列
如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个...原创 2018-07-17 15:49:10 · 897 阅读 · 0 评论 -
303. 区域和检索 - 数组不可变
给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。示例:给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()sumRange(0, 2) -> 1sumRange(2, 5) -> -1sumRange(0, 5) -> -3说明:你可以假设数组不...原创 2018-07-12 08:48:49 · 530 阅读 · 0 评论 -
208. 实现 Trie (前缀树) 还没ok
实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。示例:Trie trie = new Trie();trie.insert("apple");trie.search("apple"); // 返回 truetrie.search("app"); // 返回 falsetrie.startsWith("app...原创 2018-06-24 16:07:33 · 295 阅读 · 0 评论 -
337. 打家劫舍 III(间隔遍历)
小偷又发现一个新的可行窃的地点。 这个地区只有一个入口,称为“根”。 除了根部之外,每栋房子有且只有一个父房子。 一番侦察之后,聪明的小偷意识到“这个地方的所有房屋形成了一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。在不触动警报的情况下,计算小偷一晚能盗取的最高金额。示例 1: 3 / \ 2 3 \ \ 3...原创 2018-06-15 09:11:08 · 1335 阅读 · 1 评论 -
230. 二叉搜索树中第K小的元素
给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 1示例 2:输入: root = [5,3,6,2,4,null,null,1],...原创 2018-06-22 10:44:51 · 6265 阅读 · 0 评论 -
538. 把二叉搜索树转换为累加树
给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 二叉搜索树: 5 / \ 2 13输出: 转换为累加树: 18 / ...原创 2018-06-22 10:51:28 · 1097 阅读 · 2 评论 -
687. 最长同值路径(和543相似,返回值不同,因为意义不同)
给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。注意:两个节点之间的路径长度由它们之间的边数表示。示例 1:输入: 5 / \ 4 5 / \ \ 1 1 5输出:2示例 2:输入:...原创 2018-06-14 14:55:40 · 837 阅读 · 1 评论 -
213. 打家劫舍 II (low 和i的关系)
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [2,3,2]输出: 3解释: ...原创 2018-06-14 15:42:02 · 275 阅读 · 0 评论 -
109. 有序链表转换二叉搜索树(平衡的) 关于递归的时间复杂度是一个问题
给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 ...原创 2018-06-22 14:17:21 · 658 阅读 · 0 评论