摘要:题目 根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。 例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1,
阅读全文
摘要:题目一 494. 目标和 给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号 + 和 。对于数组中的任意一个整数,你都可以从 + 或 中选择一个符号添加在前面。 返回可以使最终数组和为目标数 S 的所有添加符号的方法数。 示例 1: 输入: nums: [1,
阅读全文
摘要:题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。 示例: 输入: [0
阅读全文
摘要:题目 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。 示例: Trie trie = new Trie(); trie.insert("apple"); trie.search("apple"); // 返回 true trie.sear
阅读全文
摘要:题目438. 找到字符串中所有字母异位词 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。 说明: 字母异位词指字母相同,但排列不同的字符串。 不考虑答案输出的顺序。 题解 滑动窗口。 数据结构 准备两个HashMap,needs存模式串
阅读全文
摘要:##总述 这类题目都是求一个最长路径,这个路径可以不经过根节点。 使用dfs(即递归地遍历树)的方法。维护一个全局最长路径max作为最终结果,而递归方法dfs返回的是含根节点的最长路径。(若不使用全局变量,也可将返回类型构造自定义类,如题目124的代码2) 注意题目是求路径(两点之间一条线)与节点数
阅读全文
摘要:题目 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。 获取数据 get(key) 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 1。 写入数据 put(key, value) 如
阅读全文
摘要:题目 给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。 此
阅读全文
摘要:题目 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 题解 双指针,每次将矮的那边往里移(因为面
阅读全文
摘要:题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 题解 i,j维护滑动窗口,HashMap存储字符出现过的索引,当出现记录过的字符,更新滑动窗口i边界。 时
阅读全文
摘要:####题目 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 ####题解 dp。先初始化长度为1和长度为2的串。再依次算长度为3,4,5...。 当找到回文串时,若长度比当前记录的回文串长度大,则更新起始位置和最大长度,最终用substring返回子串。
阅读全文
摘要:695. 岛屿的最大面积 题目 给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。 找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。) 题解 dfs/b
阅读全文
摘要:题解 是链表的两数相加的简单版:445. 两数相加 II 相关 注意StringBuilder用于字符串拼接的使用,效率较String的+高。 常用操作: 代码
阅读全文
摘要:题目 给定一个二叉树,原地将它展开为链表。 题解 原地 指结果可以覆盖输入,且额外空间限制在常数级别。 对于根节点,把右子树连到左子树的最右节点,再把左子树连到根的右子树(即覆盖右子树),当前节点的左孩子赋null;然后把根节点的右子树做当前节点,继续这么处理。 画图试试即可理解原理,大概就是把一个
阅读全文
摘要:###题目 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂
阅读全文
摘要:题目 反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 说明: 1 ≤ m ≤ n ≤ 链表长度。 题解 核心反转的部分和反转链表每k个节点是相同的。抽象为反转beg到end ,并连接l、r,即需要参数(l,beg,end,r。);pre初始化为beg,cur初始化为end,前提是保证beg
阅读全文
摘要:题目 https://leetcode cn.com/problems/sqrtx 题解 方法一:牛顿迭代法 按点斜式求出直线方程(即过点Xn,f(Xn)),然后求出直线与x轴交点,即为Xn+1; 求a的平方根即求f(x)=x^2 a的正数解,由牛顿迭代法新一轮解Xn+1=(Xn+a/Xn)/2。
阅读全文
摘要:##题目1 解 先序遍历树1,判断树1以每个节点为根的子树是否包含树2的拓扑结构。 时间复杂度:O(M*N) 注意区分判断总体包含关系、和判断子树是否包含树2的函数。 ###代码 public class Main { public static void main(String args[]) {
阅读全文
摘要:##题目 ###题解 法一: 按照递归的思维去想: 递归终止条件 递归 返回值 1 如果p、q都不在root为根节点的子树中,返回null 2 如果p、q其中之一在root为根节点的子树中,返回该节点 3 如果p、q都在root为根节点的子树子树中,返回root节点 代码逻辑: 1 如果是遍历到nu
阅读全文
摘要:###题目 199. 二叉树的右视图 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 < / \ 2 3 < \ \ 5 4 < 来源:力扣(LeetCod
阅读全文