
leetcode
No一知半解
恩?
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode算法题105:从前序与中序遍历序列构造二叉树
LeetCode传送门:从前序与中序遍历序列构造二叉树题目描述根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7思路首先回忆下,用前序遍历和中序遍历一颗二叉树: 1 / \ 2 3 / \原创 2020-06-03 11:17:44 · 226 阅读 · 0 评论 -
LeetCode算法题96:不同的二叉搜索树(Java版)
LeetCode传送门:不同的二叉搜索树题目描述给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \原创 2020-05-21 09:52:03 · 225 阅读 · 0 评论 -
LeetCode算法题64:最小路径(Java版)
LeetCode传送门:最小路径和给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。**说明:**每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。思路此题是典型的动态规划题目。状态定义:设 dp为大小 m×n 矩阵,其中 dp[i] [j]的值代表直到走到 (i,j) 的最小路径和。转移方程:题目要原创 2020-05-17 22:05:49 · 283 阅读 · 0 评论 -
LeetCode算法题62:不同路径(Java版)
LeetCode传送门:不同路径题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向右 -> 向下2. 向右 -> 向下原创 2020-05-17 21:19:34 · 307 阅读 · 0 评论 -
LeetCode算法题55:跳跃游戏(Java版)
LeetCode传送门:跳跃游戏题目描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不原创 2020-05-17 21:05:36 · 292 阅读 · 0 评论 -
LeetCode算法题49:字母异位词分组(Java版)
LeetCode传送门:字母异位词分组题目描述给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"]输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:所有输入均为小写字母。不考虑答案输出的顺序。思路遍历字符串数组,每个元素排序后,作为map的key。不断添加所有元素,最后返回,这样原创 2020-05-15 09:35:02 · 318 阅读 · 0 评论 -
LeetCode算法题48:旋转图像(Java版)
LeetCode传送门:旋转图像题目描述给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在**原地**旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]示例 2:给定 matrix =[ [ 5, 1, 9原创 2020-05-14 22:39:49 · 263 阅读 · 0 评论 -
LeetCode算法题33:搜索旋转排序数组(Java版)
LeetCode传送门:搜索旋转排序数组题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4示例 2:输入: nums =原创 2020-05-13 21:34:57 · 277 阅读 · 0 评论 -
LeetCode算法题31:下一个排列(Java版)
LeetCode传送门:下一个排列题目描述实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1思路当我们看到这个题的第一反应会想到LeetCode46全排列,容易想到我们只需要做出所有的排列情况,并找的当前序列,答案原创 2020-05-12 09:55:19 · 358 阅读 · 0 评论 -
LeetCode算法题46:全排列(Java版)
LeetCode传送门:全排列题目描述给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]思路深度优先遍历、回溯考虑的问题路径:也就是已经做出的选择。选择列表:也就是你当前可以做的选择。结束条件:也就是到达决策树底层,无法再做选择的条件。回溯算法的框架result = []def backtrack(原创 2020-05-11 14:02:19 · 450 阅读 · 0 评论 -
LeetCode算法题22:括号生成(Java版)
LeetCode传送门:括号生成题目描述数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。实例输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]思路深度优先遍历我们以 n = 2 为例,画树形结构图。方法是 “做减法”。画图以后,可以分析出的结论:当前左右括号都有大于 0 个可以使用的原创 2020-05-10 09:41:57 · 383 阅读 · 0 评论 -
LeetCode算法题17:电话号码的字母组合(Java版)
LeetCode传送门:电话号码的字母组合题目描述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。思路这道题的解法是用回溯的方式,在循环里面套了递归调用。用一个StringBuilder存储原创 2020-05-09 09:38:26 · 334 阅读 · 0 评论 -
LeetCode算法题15:三数之和(Java版)
LeetCode传送门:三数之和题目描述给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意 :答案中不可以包含重复的三元组。实例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-...原创 2020-05-08 10:03:19 · 527 阅读 · 0 评论 -
LeetCode算法题8:字符串转换整数 (atoi)(Java版)
8. 字符串转换整数 (atoi)LeetCode传送门:字符串转换整数 (atoi)题目描述请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数...原创 2020-05-07 14:56:32 · 393 阅读 · 1 评论