Loading

01 2021 档案

摘要:22. 括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n = 3 输出:["((()))","(()())","(())()","()(())","()()()"] 示例 2: 输入:n = 1 输出:["()"] 提示: 阅读全文
posted @ 2021-01-31 11:47 反身而诚、 阅读(41) 评论(0) 推荐(0) 编辑
摘要:739. 每日温度 请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。 例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输 阅读全文
posted @ 2021-01-31 11:42 反身而诚、 阅读(50) 评论(0) 推荐(0) 编辑
摘要:647. 回文子串 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。 示例 1: 输入:"abc" 输出:3 解释:三个回文子串: "a", "b", "c" 示例 2: 输入:"aaa" 输出:6 解释: 阅读全文
posted @ 2021-01-31 11:30 反身而诚、 阅读(53) 评论(0) 推荐(0) 编辑
摘要:279. 完全平方数 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 给你一个整数 n ,返回和为 n 的完全平方数的 最少数量 。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整 阅读全文
posted @ 2021-01-31 11:20 反身而诚、 阅读(216) 评论(0) 推荐(0) 编辑
摘要:5. 最长回文子串 给你一个字符串 s,找到 s 中最长的回文子串。 示例 1: 输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 示例 2: 输入:s = "cbbd" 输出:"bb" 示例 3: 输入:s = "a" 输出:"a" 示例 4: 输入:s = 阅读全文
posted @ 2021-01-30 23:52 反身而诚、 阅读(108) 评论(0) 推荐(0) 编辑
摘要:494. 目标和 给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。 返回可以使最终数组和为目标数 S 的所有添加符号的方法数。 示例: 输入:nums: [1, 1, 1 阅读全文
posted @ 2021-01-27 21:05 反身而诚、 阅读(111) 评论(0) 推荐(0) 编辑
摘要:560. 和为K的子数组 给定一个整数数组和一个整数 **k,**你需要找到该数组中和为 k 的连续的子数组的个数。 **示例 1 😗* 输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。 **说明 😗* 数组的长度为 [1, 20, 阅读全文
posted @ 2021-01-27 11:53 反身而诚、 阅读(85) 评论(0) 推荐(0) 编辑
摘要:221. 最大正方形 在一个由 '0' 和 '1' 组成的二维矩阵内,找到只包含 '1' 的最大正方形,并返回其面积。 示例 1: 输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1&qu 阅读全文
posted @ 2021-01-27 11:49 反身而诚、 阅读(45) 评论(0) 推荐(0) 编辑
摘要:438. 找到字符串中所有字母异位词 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。 字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100。 说明: 字母异位词指字母相同,但排列不同的字符串。 不考虑答案输出的顺 阅读全文
posted @ 2021-01-27 11:43 反身而诚、 阅读(57) 评论(0) 推荐(0) 编辑
摘要:139. 单词拆分 给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1: 输入: s = "leetcode", wordDict = 阅读全文
posted @ 2021-01-27 11:02 反身而诚、 阅读(51) 评论(0) 推荐(0) 编辑
摘要:31. 下一个排列 实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须** 原地 **修改,只允许使用额外常数空间。 示例 1: 输入:nums = [1,2,3] 输出:[1,3, 阅读全文
posted @ 2021-01-27 10:47 反身而诚、 阅读(45) 评论(0) 推荐(0) 编辑
摘要:27. 移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例 1: 给定 n 阅读全文
posted @ 2021-01-27 10:31 反身而诚、 阅读(37) 评论(0) 推荐(0) 编辑
摘要:437. 路径总和 III 给定一个二叉树,它的每个结点都存放着一个整数值。 找出路径和等于给定数值的路径总数。 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的 阅读全文
posted @ 2021-01-26 15:48 反身而诚、 阅读(65) 评论(0) 推荐(0) 编辑
摘要:337. 打家劫舍 III 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在 阅读全文
posted @ 2021-01-26 15:09 反身而诚、 阅读(60) 评论(0) 推荐(0) 编辑
摘要:416. 分割等和子集 给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 示例 1: 输入: [1, 5, 11, 5] 输出: true 解释: 数组可以分割成 [1, 5, 5] 和 阅读全文
posted @ 2021-01-26 14:49 反身而诚、 阅读(75) 评论(0) 推荐(0) 编辑
摘要:146. LRU 缓存机制 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。 实现 LRUCache 类: LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在 阅读全文
posted @ 2021-01-26 13:34 反身而诚、 阅读(60) 评论(0) 推荐(0) 编辑
摘要:581. 最短无序连续子数组 给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。 请你找出符合题意的 最短 子数组,并输出它的长度。 示例 1: 输入:nums = [2,6,4,8,10,9,15] 输出:5 解释:你只需要对 阅读全文
posted @ 2021-01-25 23:07 反身而诚、 阅读(74) 评论(0) 推荐(0) 编辑
摘要:338. 比特位计数 给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入: 5 输出: [0,1,1,2,1,2] 进阶: 给出时间复杂度为**O(n* 阅读全文
posted @ 2021-01-25 22:17 反身而诚、 阅读(77) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 03. 数组中重复的数字 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 阅读全文
posted @ 2021-01-24 16:21 反身而诚、 阅读(42) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 04. 二维数组中的查找 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 1 阅读全文
posted @ 2021-01-24 16:13 反身而诚、 阅读(45) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 05. 替换空格 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." 限制: 0 <= s 的长度 <= 10000 解题思路 先扫描数组, 统计空格的数量, 每个空格 阅读全文
posted @ 2021-01-24 16:08 反身而诚、 阅读(47) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 09. 用两个栈实现队列 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1: 输入: ["CQue 阅读全文
posted @ 2021-01-24 15:49 反身而诚、 阅读(45) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 10- II. 青蛙跳台阶问题 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入:n = 2 输出:2 示例 阅读全文
posted @ 2021-01-24 15:43 反身而诚、 阅读(56) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 10- I. 斐波那契数列 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 阅读全文
posted @ 2021-01-24 15:41 反身而诚、 阅读(50) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 11. 旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。 示例 1: 输入:[3,4,5, 阅读全文
posted @ 2021-01-24 15:33 反身而诚、 阅读(57) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 17. 打印从1到最大的n位数 | 递归(大数) 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。 示例 1: 输入: n = 1 输出: [1,2,3,4,5,6,7,8,9] 说明: 用返回一个整数 阅读全文
posted @ 2021-01-24 13:43 反身而诚、 阅读(56) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 15. 二进制中1的个数 请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 示例 1: 输入:00000000000000000000000000001 阅读全文
posted @ 2021-01-24 13:19 反身而诚、 阅读(45) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 57 - II. 和为s的连续正数序列 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例 1: 输入:target = 9 输出:[[2,3,4],[4,5]] 示例 阅读全文
posted @ 2021-01-24 13:11 反身而诚、 阅读(60) 评论(0) 推荐(0) 编辑
摘要:15. 三数之和 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 *a,b,c ,*使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 **注意:**答案中不可以包含重复的三元组。 示例 1: 输入:nums = [-1,0,1,2,-1,-4 阅读全文
posted @ 2021-01-23 22:54 反身而诚、 阅读(51) 评论(0) 推荐(0) 编辑
摘要:1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11, 阅读全文
posted @ 2021-01-23 20:54 反身而诚、 阅读(98) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 57. 和为s的两个数字 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[2,7] 或者 [7,2] 示例 2: 输 阅读全文
posted @ 2021-01-18 22:24 反身而诚、 阅读(110) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 50. 第一个只出现一次的字符 在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。 示例: s = "abaccdeff" 返回 "b" s = "" 返回 " " 解题思路 第一遍使用Hash表统计出现的次数, 第二次从左往右遍历找只出现 阅读全文
posted @ 2021-01-18 22:19 反身而诚、 阅读(50) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 42. 连续子数组的最大和 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和 阅读全文
posted @ 2021-01-18 22:12 反身而诚、 阅读(36) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 30. 包含min函数的栈 难度简单81 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 示例: MinStack minStack = new MinStack(); minSt 阅读全文
posted @ 2021-01-18 22:05 反身而诚、 阅读(55) 评论(0) 推荐(0) 编辑
摘要:234. 回文链表 请判断一个链表是否为回文链表。 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题? 解题思路 将后半部分链表反转, 然后设置双指针, 同时遍历。遍历 阅读全文
posted @ 2021-01-18 21:57 反身而诚、 阅读(43) 评论(0) 推荐(0) 编辑
摘要:328. 奇偶链表 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。 示例 1: 输入: 1 阅读全文
posted @ 2021-01-18 21:49 反身而诚、 阅读(48) 评论(0) 推荐(0) 编辑
摘要:142. 环形链表 II 难度中等823收藏分享切换为英文接收动态反馈 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意 阅读全文
posted @ 2021-01-18 21:37 反身而诚、 阅读(49) 评论(0) 推荐(0) 编辑
摘要:141. 环形链表 给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作 阅读全文
posted @ 2021-01-18 21:19 反身而诚、 阅读(48) 评论(0) 推荐(0) 编辑
摘要:23. 合并K个升序链表 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下: [ 1->4->5, 1- 阅读全文
posted @ 2021-01-18 21:05 反身而诚、 阅读(95) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 25. 合并两个排序的链表 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 限制: 0 <= 链表长度 <= 1000 解题思路 设置两个指针分别指向下一个要合并节 阅读全文
posted @ 2021-01-18 18:02 反身而诚、 阅读(43) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 24. 反转链表 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制: 0 <= 节点个数 <= 5000 解题思路 设置三个指针分别指向当前遍历节点 阅读全文
posted @ 2021-01-18 17:07 反身而诚、 阅读(43) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 06. 从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000 解题思路 方法一: 递归 方法二: 栈 public int[] re 阅读全文
posted @ 2021-01-18 17:03 反身而诚、 阅读(63) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 52. 两个链表的第一个公共节点 输入两个链表,找出它们的第一个公共节点。 如下面的两个链表**:** 在节点 c1 开始相交。 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA 阅读全文
posted @ 2021-01-18 16:58 反身而诚、 阅读(49) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 22. 链表中倒数第k个节点 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 示例: 给定一个 阅读全文
posted @ 2021-01-18 16:51 反身而诚、 阅读(38) 评论(0) 推荐(0) 编辑
摘要:19. 删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实 阅读全文
posted @ 2021-01-18 16:48 反身而诚、 阅读(44) 评论(0) 推荐(0) 编辑
摘要:237. 删除链表中的节点 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。 现有一个链表 -- head = [4,5,1,9],它可以表示为: 示例 1: 输入:head = [4,5,1,9], node = 5 输出:[4,1,9] 解释: 阅读全文
posted @ 2021-01-18 16:30 反身而诚、 阅读(50) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 18. 删除链表的节点 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 **注意:**此题对比原题有改动 示例 1: 输入: head = [4,5,1,9], val = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 阅读全文
posted @ 2021-01-18 16:26 反身而诚、 阅读(40) 评论(0) 推荐(0) 编辑
摘要:124. 二叉树中的最大路径和 路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root ,返回其 最大路径和 。 示例 1: 输入:root = [1,2,3 阅读全文
posted @ 2021-01-18 16:16 反身而诚、 阅读(91) 评论(0) 推荐(0) 编辑
摘要:208. 实现 Trie (前缀树) 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。 示例: Trie trie = new Trie(); trie.insert("apple"); trie.search("apple"); // 返 阅读全文
posted @ 2021-01-18 15:50 反身而诚、 阅读(62) 评论(0) 推荐(0) 编辑
摘要:96. 不同的二叉搜索树 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 2 3 解 阅读全文
posted @ 2021-01-18 15:46 反身而诚、 阅读(42) 评论(0) 推荐(0) 编辑
摘要:108. 将有序数组转换为二叉搜索树 难度简单678 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9, 阅读全文
posted @ 2021-01-18 15:33 反身而诚、 阅读(45) 评论(0) 推荐(0) 编辑
摘要:105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / 阅读全文
posted @ 2021-01-18 15:28 反身而诚、 阅读(36) 评论(0) 推荐(0) 编辑
摘要:543. 二叉树的直径 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 **示例 😗* 给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。 * 阅读全文
posted @ 2021-01-17 23:45 反身而诚、 阅读(47) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的 阅读全文
posted @ 2021-01-17 23:39 反身而诚、 阅读(40) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 68 - II. 二叉树的最近公共祖先 难度简单178 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以 阅读全文
posted @ 2021-01-17 23:22 反身而诚、 阅读(46) 评论(0) 推荐(0) 编辑
摘要:114. 二叉树展开为链表 给定一个二叉树,原地将它展开为一个单链表。 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 方法一:递归先序遍历保存进List public void flatten(TreeNode root) { 阅读全文
posted @ 2021-01-17 23:13 反身而诚、 阅读(93) 评论(0) 推荐(0) 编辑
摘要:538. 把二叉搜索树转换为累加树 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。 提醒一下,二叉搜索树满足下列约束条件: 节点的左子树仅包含键 小于 节点键的 阅读全文
posted @ 2021-01-17 23:04 反身而诚、 阅读(41) 评论(0) 推荐(0) 编辑
摘要:230. 二叉搜索树中第K小的元素 难度中等338 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。 示例 1: 输入: root = [3,1,4,null,2], k = 1 3 阅读全文
posted @ 2021-01-17 22:59 反身而诚、 阅读(50) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 54. 二叉搜索树的第k大节点 给定一棵二叉搜索树,请找出其中第k大的节点。 示例 1: 输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2 输出: 4 示例 2: 输入: root = [5,3,6,2,4,null,null,1], k 阅读全文
posted @ 2021-01-17 22:52 反身而诚、 阅读(49) 评论(0) 推荐(0) 编辑
摘要:94. 二叉树的中序遍历 难度中等826 给定一个二叉树的根节点 root ,返回它的 中序 遍历。 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1] 示例 4: 输 阅读全文
posted @ 2021-01-17 22:44 反身而诚、 阅读(58) 评论(0) 推荐(0) 编辑
摘要:98. 验证二叉搜索树 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入: 2 / \ 1 3 输出: true 示例 2: 阅读全文
posted @ 2021-01-17 22:34 反身而诚、 阅读(44) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 55 - II. 平衡二叉树 输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 tr 阅读全文
posted @ 2021-01-17 22:13 反身而诚、 阅读(39) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 55 - I. 二叉树的深度 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大 阅读全文
posted @ 2021-01-17 22:04 反身而诚、 阅读(26) 评论(0) 推荐(0) 编辑
摘要:617. 合并二叉树 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。 示例 1: 输入: Tree 1 阅读全文
posted @ 2021-01-17 22:01 反身而诚、 阅读(40) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 27. 二叉树的镜像 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入: 4 / \ 2 7 / \ / \ 1 3 6 9 镜像输出: 4 / \ 7 2 / \ / \ 9 6 3 1 示例 1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7 阅读全文
posted @ 2021-01-17 21:52 反身而诚、 阅读(66) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 28. 对称的二叉树 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3 阅读全文
posted @ 2021-01-17 21:42 反身而诚、 阅读(48) 评论(0) 推荐(0) 编辑
摘要:347. 前 K 个高频元素 给定一个非空的整数数组,返回其中出现频率前 *k* 高的元素。 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], k = 1 输出: [1] 提示: 你可以假设给定的 k 总是合理 阅读全文
posted @ 2021-01-17 21:05 反身而诚、 阅读(171) 评论(0) 推荐(0) 编辑
摘要:215. 数组中的第K个最大元素 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 阅读全文
posted @ 2021-01-17 20:05 反身而诚、 阅读(91) 评论(0) 推荐(0) 编辑
摘要:75. 颜色分类 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,**原地**对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 **注意:**请不要使用代码库中的排序函数来解决这道题。 进阶: 你能想出 阅读全文
posted @ 2021-01-17 17:17 反身而诚、 阅读(53) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 示例: 输入:nums = [1,2,3,4] 输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。 解题 阅读全文
posted @ 2021-01-17 16:17 反身而诚、 阅读(39) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 40. 最小的k个数 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 示例 1: 输入:arr = [3,2,1], k = 2 输出:[1,2] 或者 [2,1] 示例 2: 输入:arr 阅读全文
posted @ 2021-01-17 15:55 反身而诚、 阅读(65) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 65. 不用加减乘除做加法 写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。 示例: 输入: a = 1, b = 1 输出: 2 提示: a, b 均可能是负数或 0 结果不会溢出 32 位整数 解题思路 学过计算机组成原理的都知 阅读全文
posted @ 2021-01-17 15:26 反身而诚、 阅读(58) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 61. 扑克牌中的顺子 难度简单89 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。 示例 1: 输入: [1,2,3,4,5] 输出: Tru 阅读全文
posted @ 2021-01-17 15:03 反身而诚、 阅读(63) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 29. 顺时针打印矩阵 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 示例 2: 输入:matrix = [[1,2,3,4],[ 阅读全文
posted @ 2021-01-17 14:47 反身而诚、 阅读(63) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 64. 求1+2+…+n 求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 限制: 1 <= n <= 10000 解题思路 这是一道考验知识储备的题目。高斯小学就告诉我们, 首尾相加乘以 阅读全文
posted @ 2021-01-17 14:35 反身而诚、 阅读(70) 评论(0) 推荐(0) 编辑
摘要:268. 丢失的数字 难度简单361 给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。 进阶: 你能否实现线性时间复杂度、仅使用额外常数空间的算法解决此问题? 示例 1: 输入:nums = [3,0,1] 输出:2 解释:n = 阅读全文
posted @ 2021-01-17 13:55 反身而诚、 阅读(103) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 53 - II. 0~n-1中缺失的数字 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。 示例 1: 输入: [0,1,3] 输出: 2 示例 2: 输入: [0 阅读全文
posted @ 2021-01-17 13:29 反身而诚、 阅读(65) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 53 - I. 在排序数组中查找数字 I 统计一个数字在排序数组中出现的次数。 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 示例 2: 输入: nums = [5,7,7,8,8,10], target = 6 输出: 0 限 阅读全文
posted @ 2021-01-17 12:03 反身而诚、 阅读(50) 评论(0) 推荐(0) 编辑
摘要:309. 最佳买卖股票时机含冷冻期 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 卖出股票后,你无法在第二天买入 阅读全文
posted @ 2021-01-17 11:41 反身而诚、 阅读(110) 评论(0) 推荐(0) 编辑
摘要:122. 买卖股票的最佳时机 II 难度简单1065 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 **注意:**你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 阅读全文
posted @ 2021-01-17 11:03 反身而诚、 阅读(48) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 63. 股票的最大利润 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 阅读全文
posted @ 2021-01-17 10:53 反身而诚、 阅读(56) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 12. 矩阵中的路径 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“b 阅读全文
posted @ 2021-01-17 10:40 反身而诚、 阅读(42) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 32 - III. 从上到下打印二叉树 III 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 阅读全文
posted @ 2021-01-16 21:59 反身而诚、 阅读(94) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 32 - II. 从上到下打印二叉树 II 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20] 阅读全文
posted @ 2021-01-16 13:19 反身而诚、 阅读(77) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 32 - I. 从上到下打印二叉树 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回: [3,9,20,15,7] 提示: 节点总数 <= 10 阅读全文
posted @ 2021-01-16 13:03 反身而诚、 阅读(66) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 56 - II. 数组中数字出现的次数 II 在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。 示例 1: 输入:nums = [3,4,3,3] 输出:4 示例 2: 输入:nums = [9,1,7,9,7,9,7] 输出:1 阅读全文
posted @ 2021-01-16 12:37 反身而诚、 阅读(95) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 56 - I. 数组中数字出现的次数 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 示例 1: 输入:nums = [4,1,4,6] 输出:[1,6] 或 [6,1] 示例 2 阅读全文
posted @ 2021-01-16 12:23 反身而诚、 阅读(90) 评论(0) 推荐(0) 编辑
摘要:136. 只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输 阅读全文
posted @ 2021-01-16 12:07 反身而诚、 阅读(87) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 62. 圆圈中最后剩下的数字 0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩 阅读全文
posted @ 2021-01-16 11:35 反身而诚、 阅读(60) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 方法一:Hash计数 先遍历一遍数 阅读全文
posted @ 2021-01-16 11:18 反身而诚、 阅读(70) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 58 - I. 翻转单词顺序 难度简单59 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。 示例 1: 输入: "the sky 阅读全文
posted @ 2021-01-15 21:52 反身而诚、 阅读(70) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 47. 礼物的最大价值 在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物? 示例 1: 阅读全文
posted @ 2021-01-15 21:06 反身而诚、 阅读(70) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 67. 把字符串转换成整数 写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可 阅读全文
posted @ 2021-01-15 20:01 反身而诚、 阅读(63) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 66. 构建乘积数组 给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。 示例: 输入 阅读全文
posted @ 2021-01-15 18:13 反身而诚、 阅读(43) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 45. 把数组排成最小的数 难度中等141 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 示例 1: 输入: [10,2] 输出: "102" 示例 2: 输入: [3,30,34,5,9] 输出: "3033459" 提示: 0 阅读全文
posted @ 2021-01-15 18:05 反身而诚、 阅读(59) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 49. 丑数 难度中等105 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。 说 阅读全文
posted @ 2021-01-15 18:00 反身而诚、 阅读(46) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 34. 二叉树中和为某一值的路径 难度中等120 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 阅读全文
posted @ 2021-01-15 17:31 反身而诚、 阅读(54) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 26. 树的子结构 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 例如: 给定的树 A: ​ 3 / 4 5 / 1 2 给定的树 B: 4 / 1 返回 true,因为 B 与 A 的一 阅读全文
posted @ 2021-01-15 17:23 反身而诚、 阅读(43) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 14- II. 剪绳子 II 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m - 1] 。请问 k[0]*k[1]*...*k[m - 1] 可能的最大乘积是多少?例如,当绳子的长度 阅读全文
posted @ 2021-01-15 17:13 反身而诚、 阅读(71) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 14- I. 剪绳子 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它 阅读全文
posted @ 2021-01-15 17:05 反身而诚、 阅读(87) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 38. 字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 示例: 输入:s = "abc" 输出:["abc","acb","bac","bca","cab","cba"] 限制: 1 <= s 的长度 <= 阅读全文
posted @ 2021-01-15 16:45 反身而诚、 阅读(71) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 60. n个骰子的点数 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。 示例 1: 输入: 1 输出: [0.16667 阅读全文
posted @ 2021-01-15 16:12 反身而诚、 阅读(61) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 46. 把数字翻译成字符串 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。 示例 1: 输入: 1 阅读全文
posted @ 2021-01-15 15:24 反身而诚、 阅读(51) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 59 - II. 队列的最大值 请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。 若队列为空,pop_front 和 max_value 需要返回 -1 示例 1 阅读全文
posted @ 2021-01-15 15:06 反身而诚、 阅读(54) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 59 - I. 滑动窗口的最大值 给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 示例: 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 [1 3 -1 阅读全文
posted @ 2021-01-15 14:55 反身而诚、 阅读(46) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 35. 复杂链表的复制 请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。 示例 1: 输入:head = [[7,null],[13,0], 阅读全文
posted @ 2021-01-15 13:45 反身而诚、 阅读(44) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 36. 二叉搜索树与双向链表 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 为了让您更好地理解问题,以下面的二叉搜索树为例: 我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针 阅读全文
posted @ 2021-01-15 13:00 反身而诚、 阅读(117) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 31. 栈的压入、弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2 阅读全文
posted @ 2021-01-15 12:45 反身而诚、 阅读(67) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 33. 二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树: 5 / \ 2 6 / \ 1 3 示例 1: 输入: [1,6,3,2 阅读全文
posted @ 2021-01-15 12:11 反身而诚、 阅读(106) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 13. 机器人的运动范围 地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能 阅读全文
posted @ 2021-01-15 11:12 反身而诚、 阅读(61) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 48. 最长不含重复字符的子字符串 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 阅读全文
posted @ 2021-01-15 10:55 反身而诚、 阅读(42) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 16. 数值的整数次方 实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。 示例 1: 输入: 2.00000, 10 输出: 1024.00000 示例 2: 输入: 阅读全文
posted @ 2021-01-15 10:35 反身而诚、 阅读(56) 评论(0) 推荐(0) 编辑
摘要:Medium | LeetCode 400 | 剑指 Offer 44. 数字序列中某一位的数字 数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。 请写一个函数,求任意第n位对应的数字。 阅读全文
posted @ 2021-01-14 22:42 反身而诚、 阅读(89) 评论(0) 推荐(0) 编辑
摘要:Hard | LeetCode 295 | 剑指 Offer 41. 数据流中的中位数 | 优先队列(堆排序) 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 阅读全文
posted @ 2021-01-14 22:36 反身而诚、 阅读(73) 评论(0) 推荐(0) 编辑
摘要:Hard | LeetCode 297 | 剑指 Offer 37. 序列化二叉树 请实现两个函数,分别用来序列化和反序列化二叉树。 示例: 你可以将以下二叉树: 1 / \ 2 3 / \ 4 5 序列化为 "[1,2,3,null,null,4,5]" 方法一:使用数组存储完全二叉树 采用完全二 阅读全文
posted @ 2021-01-14 22:34 反身而诚、 阅读(67) 评论(0) 推荐(0) 编辑
摘要:Hard | 剑指 Offer 43. 1~n 整数中 1 出现的次数 输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。 例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。 示例 1: 输入:n = 12 输出:5 示例 2: 输入:n = 阅读全文
posted @ 2021-01-14 22:29 反身而诚、 阅读(73) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 51. 数组中的逆序对 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 示例 1: 输入: [7,5,6,4] 输出: 5 方法一: 归并排序 这道Hard题是很难想的。方法很巧妙, 我是看了题解看了好长 阅读全文
posted @ 2021-01-14 17:07 反身而诚、 阅读(117) 评论(0) 推荐(0) 编辑
摘要:请实现一个函数用来匹配包含'. '和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但与"aa.a"和"ab*a"均不匹配。 示例 阅读全文
posted @ 2021-01-14 16:16 反身而诚、 阅读(49) 评论(0) 推荐(0) 编辑
摘要:一、搭建方法 在虚拟机上搭建集群的方法通常有两种 1.类似于真实的机器上部署,首先要进行密钥授权使各台机器之间能够免密码相互访问,然后在主节点上将各个软件配置好,分发各个从节点。 2.采用虚拟机克隆的方式,先进行软件的配置,然后将master的公钥授权自己,这样克隆出来的多个虚拟机之间都能够免密码登 阅读全文
posted @ 2021-01-01 15:47 反身而诚、 阅读(2134) 评论(6) 推荐(0) 编辑