leetbook
文章平均质量分 51
叶落雨飘
emmmmm 我是一只小萌新~
展开
-
[leetbook中级算法-动态规划(java解法)]LC最长上升子序列
leetbook:中级算法类型:动态规划题目名:最长上升子序列原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xwhvq3/题目描述给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,原创 2021-01-27 18:39:23 · 128 阅读 · 0 评论 -
[leetbook中级算法-动态规划(java解法)]LC零钱兑换
leetbook:中级算法类型:动态规划题目名:零钱兑换原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvf0kh/题目描述给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。示例 1:输入:coins = [1, 2, 5], amount原创 2021-01-27 16:52:17 · 217 阅读 · 0 评论 -
[leetbook中级算法-动态规划(java解法)]LC不同路径
leetbook:中级算法类型:动态规划题目名:不同路径原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvjigd/题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:输入:m = 3, n = 7输原创 2021-01-27 11:46:08 · 123 阅读 · 0 评论 -
[leetbook中级算法-动态规划(java解法)]LC跳跃游戏
leetbook:中级算法类型:动态规划题目名:跳跃游戏原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvenhm/题目描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再原创 2021-01-27 11:22:27 · 112 阅读 · 0 评论 -
[leetbook中级算法-排序和搜索(java解法)]LC搜索二维矩阵 II
leetbook:中级算法类型:排序和搜索题目名:搜索二维矩阵 II原题URL: https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvc64r/题目描述编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例示例 1:输入:matrix = [[1,4,7,11,15],[2,5,8原创 2021-01-27 10:59:13 · 110 阅读 · 0 评论 -
[leetbook中级算法-排序和搜索(java解法)]LC搜索旋转排序数组
leetbook:中级算法类型:排序和搜索题目名:搜索旋转排序数组原题URL: https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvyz1t/题目描述升序排列的整数数组 nums 在预先未知的某个点上进行了旋转(例如, [0,1,2,4,5,6,7] 经旋转后可能变为 [4,5,6,7,0,1,2] )。请你在数组中搜索 target ,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。示例示原创 2021-01-27 10:40:20 · 93 阅读 · 0 评论 -
[leetbook中级算法-排序和搜索(java解法)]LC合并区间
leetbook:中级算法类型:排序和搜索题目名:合并区间原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xv11yj/题目描述给出一个区间的集合,请合并所有重叠的区间。示例示例 1:输入: intervals = [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [原创 2021-01-26 18:20:56 · 95 阅读 · 0 评论 -
[leetbook中级算法-排序和搜索(java解法)]LC在排序数组中查找元素的第一个和最后一个位置
leetbook:中级算法类型:排序和搜索题目名:在排序数组中查找元素的第一个和最后一个位置原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xv4bbv/题目描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n)原创 2021-01-26 17:53:35 · 86 阅读 · 0 评论 -
[leetbook中级算法-排序和搜索(java解法)]LC寻找峰值
leetbook:中级算法类型:排序和搜索题目名:寻找峰值原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xv4hjg/题目描述峰值元素是指其值大于左右相邻值的元素。给你一个输入数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。你可以假设 nums[-1] = nums[n] = -∞ 。示例示例 1:输入:nums = [1原创 2021-01-26 17:18:14 · 113 阅读 · 0 评论 -
[leetbook中级算法-排序和搜索(java解法)]LC前 K 个高频元素
leetbook:中级算法类型:排序和搜索题目名:前 K 个高频元素原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvzpxi/题目描述给定一个非空的整数数组,返回其中出现频率前 *k* 高的元素。示例示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]示例 3:输入:n原创 2021-01-26 16:07:26 · 90 阅读 · 0 评论 -
[leetbook中级算法-排序和搜索(java解法)]LC颜色分类
leetbook:中级算法类型:排序和搜索题目名:颜色分类原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvg25c/题目描述给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。示例示例 1:输入:nums = [2,0,2,1,1,0]输出:原创 2021-01-26 14:21:58 · 105 阅读 · 0 评论 -
[leetbook中级算法-回溯算法(java解法)]LC单词搜索
leetbook:中级算法类型:回溯算法题目名:单词搜索原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvkwe2/题目描述给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例示例 1:board =[ ['A','B','C','E原创 2021-01-25 11:51:04 · 99 阅读 · 0 评论 -
[leetbook中级算法-回溯算法(java解法)]LC子集
leetbook:中级算法类型:回溯算法题目名:子集原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xv33m7/题目描述给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3]原创 2021-01-25 11:43:52 · 105 阅读 · 0 评论 -
[leetbook中级算法-回溯算法(java解法)]LC全排列
leetbook:中级算法类型:回溯算法题目名:全排列原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvqup5/题目描述给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例示例 1:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]解题思路1.回溯算法2原创 2021-01-25 11:24:22 · 125 阅读 · 0 评论 -
[leetbook中级算法-回溯算法(java解法)]LC括号生成
leetbook:中级算法类型:回溯算法题目名:括号生成原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xv33m7/题目描述数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["原创 2021-01-25 11:19:15 · 114 阅读 · 0 评论 -
[leetbook中级算法-回溯算法(java解法)]LC电话号码的字母组合
leetbook:中级算法类型:回溯算法题目名:电话号码的字母组合原题URL:[https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xv8ka1/][https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xv8ka1/]题目描述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键原创 2021-01-24 22:20:12 · 151 阅读 · 0 评论 -
[leetbook中级算法-树和图(java解法)]LC岛屿数量
leetbook:中级算法类型:树和图题目名:岛屿数量原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvtsnm/题目描述给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例示例 1:输入:grid = [ ["1","1"原创 2021-01-24 21:26:08 · 110 阅读 · 0 评论 -
[leetbook中级算法-树和图(java解法)]LC二叉搜索树中第K小的元素
leetbook:中级算法类型:树和图题目名:二叉搜索树中第K小的元素原题URL:https????/leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvuyv3/题目描述给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例示例 1:输入: root = [3,1,4,null,2], k = 1原创 2021-01-24 21:22:34 · 76 阅读 · 0 评论 -
[leetbook中级算法-树和图(java解法)]LC填充每个节点的下一个右侧节点指针
leetbook:中级算法类型:树和图题目名:填充每个节点的下一个右侧节点指针原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvijdh/题目描述给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 n原创 2021-01-24 21:19:22 · 94 阅读 · 0 评论 -
[leetbook中级算法-树和图(java解法)]LC从前序与中序遍历序列构造二叉树
leetbook:中级算法类型:树和图题目名:从前序与中序遍历序列构造二叉树原题URL:https????/leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvix0d/题目描述根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3原创 2021-01-24 21:14:41 · 98 阅读 · 0 评论 -
[leetbook中级算法-树和图(java解法)]LC二叉树的锯齿形层次遍历
leetbook:中级算法类型:树和图题目名:二叉树的锯齿形层次遍历原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvle7s/题目描述给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。示例例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 1原创 2021-01-24 21:11:18 · 102 阅读 · 0 评论 -
[leetbook中级算法-树和图(java解法)]LC二叉树的中序遍历
leetbook:中级算法类型:树和图题目名:二叉树的中序遍历原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xv7pir/题目描述给定一个二叉树的根节点 root ,返回它的 中序 遍历。示例示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]限制树中原创 2021-01-24 21:07:01 · 109 阅读 · 0 评论 -
[leetbook中级算法-链表(java解法)]LC相交链表
leetbook:中级算法类型:链表题目名:相交链表原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xv02ut/题目描述编写一个程序,找到两个单链表相交的起始节点。示例示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the n原创 2021-01-23 21:46:46 · 93 阅读 · 0 评论 -
[leetbook中级算法-链表(java解法)]LC奇偶链表
leetbook:中级算法类型:链表题目名:奇偶链表原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvdwtj/题目描述给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例示例 1:输原创 2021-01-23 21:31:35 · 104 阅读 · 0 评论 -
[leetbook中级算法-链表(java解法)]LC两数相加
leetbook:中级算法类型:链表题目名:两数相加原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvw73v/题目描述给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例示例 1:输入:l1 = [2,4原创 2021-01-23 18:41:54 · 116 阅读 · 1 评论 -
[leetbook中级算法-数组和字符串(java解法)]LC递增的三元子序列
leetbook:中级算法类型:数组和字符串题目名:递增的三元子序列原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvvuqg/题目描述给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;原创 2021-01-23 15:06:04 · 115 阅读 · 1 评论 -
[leetbook中级算法-数组和字符串(java解法)]LC最长回文子串
leetbook:中级算法类型:数组和字符串题目名:最长回文子串原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvn3ke/题目描述给你一个字符串 s,找到 s 中最长的回文子串。示例示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"示例 3:输入:s = "ac"输出:"a"原创 2021-01-23 12:44:34 · 88 阅读 · 0 评论 -
[leetbook中级算法-数组和字符串(java解法)]LC无重复字符的最长子串
leetbook:中级算法类型:数组和字符串题目名:无重复字符的最长子串原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xv2kgi/题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例示例 1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出:原创 2021-01-23 12:40:05 · 106 阅读 · 0 评论 -
[leetbook中级算法-数组和字符串(java解法)]LC字母异位词分组
leetbook:中级算法类型:数组和字符串题目名:字母异位词分组原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvaszc/题目描述给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例示例 1:输入: ["eat", "tea", "tan", "ate", "nat", "bat"]输出:[ ["ate","eat","tea"], [原创 2021-01-23 12:33:44 · 142 阅读 · 0 评论 -
[leetbook中级算法-数组和字符串(java解法)]LC矩阵置零
leetbook:中级算法类型:数组和字符串题目名:矩阵置零原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvmy42/题目描述给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用**原地算法。**示例示例 1:输入: [ [1,1,1], [1,0,1], [1,1,1]]输出: [ [1,0,1], [0,0,0],原创 2021-01-23 12:29:57 · 127 阅读 · 0 评论 -
[leetbook中级算法-数组和字符串(java解法)]LC三数之和
leetbook:中级算法类型:数组和字符串题目名:三数之和原题URL:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvpj16/题目描述给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例示例 1:输入:nums = [-1,0,1,2,-1原创 2021-01-23 12:23:09 · 117 阅读 · 3 评论