随笔分类 - 算法学习
摘要:package LeetCode.stackpart03; /** * 84. 柱状图中最大的矩形 * */ public class LargestRectangleHistogram_84 { public int largestRectangleArea(int[] heights) { in
阅读全文
摘要:package LeetCode.stackpart02; import java.util.Arrays; import java.util.Stack; public class NextGreaterElementII_503 { public int[] nextGreaterElement
阅读全文
摘要:package LeetCode.stackpart01; import java.util.Deque; import java.util.LinkedList; /** * 739. 每日温度 * 给定一个整数数组 temperatures,表示每天的温度,返回一个数组answer,其中answ
阅读全文
摘要:package LeetCode.DPpart17; /** * 516. 最长回文子序列 * 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。 * 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。 * */ public class Lo
阅读全文
摘要:package LeetCode.DPpart16; /** * 583. 两个字符串的删除操作 * 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。 * 每步 可以删除任意一个字符串中的一个字符。 * */ public class Delet
阅读全文
摘要:package LeetCode.DPpart15; public class DistinctSubsequences_115 { public int numDistinct(String s, String t) { int[][] dp = new int[s.length() + 1][t
阅读全文
摘要:package LeetCode.DPpart14; /** * 1143. 最长公共子序列 * 给定两个字符串text1 和text2,返回这两个字符串的最长 公共子序列 的长度。 * 如果不存在 公共子序列 ,返回 0 。 * 一个字符串的子序列是指这样一个新的字符串:它是由原字符串在不改变字符
阅读全文
摘要:package LeetCode.DPpart13; /** * 674. 最长连续递增序列 * 给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。 * 连续递增的子序列 可以由两个下标 l 和 r(l < r)确定, * 如果对于每个 l <= i < r,都有 num
阅读全文
摘要:package LeetCode.Treepart09; public class ConvertBSTGreaterTree_538 { int sum; public TreeNode convertBST(TreeNode root) { sum = 0; convertBST1(root);
阅读全文
摘要:package LeetCode.Treepart08; public class DeleteNodeBST_450 { public TreeNode deleteNode(TreeNode root, int key) { root = delete(root,key); return roo
阅读全文
摘要:package LeetCode.Treepart07; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.strea
阅读全文
摘要:package LeetCode.Treepart06; /** * 654. 最大二叉树 * 给定一个不重复的整数数组nums 。最大二叉树可以用下面的算法从nums 递归地构建: * 创建一个根节点,其值为nums 中的最大值。 * 递归地在最大值左边的子数组前缀上构建左子树。 * 递归地在最大
阅读全文
摘要:package LeetCode.Treepart05; import java.util.HashMap; import java.util.Map; public class ConstructBinaryTree_105 { Map<Integer, Integer> map; public
阅读全文
摘要:package LeetCode.Treepart04; /** * 110. 平衡二叉树 * 给定一个二叉树,判断它是否是高度平衡的二叉树。 * 本题中,一棵高度平衡二叉树定义为: * 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 * */ public class Balan
阅读全文
摘要:package LeetCode.Treepart03; /** * 222. 完全二叉树的节点个数 * 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 * 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外, * 其余每层节点数都达到最大值,并且最下面一层的节点都
阅读全文
摘要:package LeetCode.Treepart02; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Queue; /** * 102. 二叉树的层序
阅读全文
摘要:package LeetCode.Treepart01; import java.util.ArrayList; import java.util.List; public class Traversal { public List<Integer> preorderTraversal(TreeNo
阅读全文
摘要:package LeetCode.DPpart12; /** * 309. 最佳买卖股票时机含冷冻期 * 给定一个整数数组prices,其中第 prices[i]表示第 i 天的股票价格 。 * 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): *
阅读全文
摘要:package LeetCode.DPpart11; /** * 123. 买卖股票的最佳时机 III * 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格. * 设计一个算法来计算你所能获取的最大利润。你最多可以完成两笔交易。 * 注意:你不能同时参与多笔交易(你必须在再次购买前
阅读全文
摘要:package LeetCode.DPpart10; /** * 121. 买卖股票的最佳时机 * 给定一个数组 prices ,它的第i 个元素prices[i] 表示一支给定股票第 i 天的价格。 * 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来
阅读全文