leetcode
释然强
这个作者很懒,什么都没留下…
展开
-
专题1--排序算法
参考:https://www.cnblogs.com/fnlingnzb-learner/p/9374732.html一、排序算法分析序号排序方法时间复杂度(平均)时间复杂度(最坏)时间复杂度(最好)空间复杂度稳定性01插入排序O(n2)O(n2)O(n)O(1)稳定02希尔排序O(n1.3)O(n2)O(n)O(1)不稳定03选择排序O(n2)O(n2)O(n2)O(1)不稳定04堆排序O(nlogn)O(nlo原创 2020-07-20 19:30:16 · 185 阅读 · 0 评论 -
leetcode--287寻找重复数(001)
给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n2) 。数组中只有一个重复的数字,但它可能不止重复出现一次。方法1:二分法因为题目的要求比较多,所以hash不能原创 2020-05-26 22:28:55 · 178 阅读 · 0 评论 -
leetcode--5最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"解法1:动态规划,参考leetcode516class Solution {public: string longestPalindrome(string s) { int n = s.size(); //dp[i][j] 代原创 2020-05-21 10:56:34 · 166 阅读 · 0 评论 -
leetcode--322零钱兑换(001)
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1说明:你可以...原创 2020-05-03 19:20:26 · 106 阅读 · 0 评论 -
leetcode-300最长上升子序列(001)
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?方法1:动态规划...原创 2020-05-03 18:58:44 · 113 阅读 · 0 评论 -
leetcode--股票问题六道题(001)
给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例:输入: [1,2,3,0,2]输出: 3 解释: 对应的交易状态为: [买入, 卖出, 冷...原创 2020-04-26 17:40:27 · 292 阅读 · 0 评论 -
leetcode--105从前序与中序遍历构造二叉树(001)
根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7方法:使用递归。具体是:前序遍历的第一个数是根节点。在中序遍历中找到根节点,然后根...原创 2020-04-16 10:08:23 · 114 阅读 · 0 评论 -
leetcode--213打家劫舍(001)
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [2,3,2]输出: 3解释: 你不能...原创 2020-04-15 15:32:54 · 93 阅读 · 0 评论 -
leetcode--198打家劫舍(001)
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号...原创 2020-04-15 12:01:04 · 77 阅读 · 0 评论 -
leetcode--63不同路径2
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?说明:m 和 n 的值均不超过 100。示例 1:输入:[ [0,0,0], [0,1,0], [0,0,0]]输出: 2解...原创 2020-04-15 11:24:51 · 95 阅读 · 0 评论 -
leetcode--62不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向右 -> 向下2. 向右 -&g...原创 2020-04-15 10:46:10 · 126 阅读 · 0 评论 -
leetcode--91 解码方法(001)
一条包含字母 A-Z 的消息通过以下方式进行了编码:'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: "12"输出: 2解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。示例 2:输入: "226"输出: 3解释: 它可以解码为 "BZ" (2 26), "VF...原创 2020-04-15 10:15:02 · 150 阅读 · 0 评论 -
leetcode--343整数拆分(001)
给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。说明: 你可以假设 n 不小于 2 且不大于 58。来源:力扣(LeetCode)链接...原创 2020-04-12 15:12:35 · 752 阅读 · 0 评论 -
leetcode--64最小路径和
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems...原创 2020-04-12 10:55:45 · 118 阅读 · 1 评论 -
leetcode--120三角形最小路径
给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。来源:力扣(LeetCode...原创 2020-04-12 10:16:52 · 121 阅读 · 0 评论 -
leetcode--70爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 ...原创 2020-04-11 18:11:31 · 90 阅读 · 0 评论 -
leetcode--52N皇后二
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给定一个整数 n,返回 n 皇后不同的解决方案的数量。示例:输入: 4输出: 2解释: 4 皇后问题存在如下两个不同的解法。[[".Q…", // 解法 1“…Q”,“Q…”,“…Q.”],["…Q.", // 解法 2“Q…”,“…Q”,“.Q…”]]来源:力扣(L...原创 2020-04-11 10:31:45 · 116 阅读 · 0 评论 -
leetcode--51N皇后
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入: 4输出: [[".Q..", // 解法 1 "...Q", "Q......原创 2020-04-11 10:25:54 · 129 阅读 · 0 评论 -
leetcode--417太平洋大西洋水流问题(001)
给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度。“太平洋”处于大陆的左边界和上边界,而“大西洋”处于大陆的右边界和下边界。规定水流只能按照上、下、左、右四个方向流动,且只能从高到低或者在同等高度上流动。请找出那些水流既可以流动到“太平洋”,又能流动到“大西洋”的陆地单元的坐标。提示:输出坐标的顺序不重要m 和 n 都小于150示例:给定下面的 5x5 矩阵:太平洋...原创 2020-04-11 10:11:42 · 171 阅读 · 0 评论 -
leetcode--130 被围绕的区域(001)
给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充为 ‘X’...原创 2020-04-09 11:29:47 · 195 阅读 · 0 评论 -
leetcode--79单词搜索(001)
给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word = "ABCCED", 返回 t...原创 2020-04-08 11:15:00 · 133 阅读 · 0 评论 -
leetcode--401(001)
二进制手表顶部有 4 个 LED 代表小时(0-11),底部的 6 个 LED 代表分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。给定一个非负整数 n 代表当前 LED 亮着的数量,返回所有可能的时间。案例:输入: n = 1返回: ["1:00", "2:00", "4:00", "8:00", "0:01", "0:02", "0:04", "0:08", "0...原创 2020-04-07 16:51:14 · 159 阅读 · 0 评论 -
leetcode--90子集二
给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[[2],[1],[1,2,2],[2,2],[1,2],[]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/subsets-ii方法:参考leetcode78,只是两...原创 2020-04-07 15:23:50 · 132 阅读 · 0 评论 -
leetcode--78子集(001)
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例: 输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/subsets方法:这...原创 2020-04-07 15:10:37 · 88 阅读 · 0 评论 -
leetcode--216组合总和三
找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。解集不能包含重复的组合。 示例 1:输入: k = 3, n = 7输出: [[1,2,4]]示例 2:输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]]来源:力扣(LeetCode)链...原创 2020-04-07 11:29:51 · 346 阅读 · 0 评论 -
leetcode--39组合总和
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。 示例 1:输入: candidates = [2,3,6,7], target = 7,所求解集为:[ ...原创 2020-04-07 10:40:30 · 118 阅读 · 0 评论 -
leetcode--77组合
给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例: 输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/combinations方法:递归与回溯。开始做这道题,主要是在递归参...原创 2020-04-07 09:52:18 · 100 阅读 · 0 评论 -
leetcode--46全排列(001)
给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations方法:递归与回溯解决全排列问题。构建一个参...原创 2020-04-06 17:00:07 · 100 阅读 · 0 评论 -
leetcode--131分割回文串(001)
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。示例:输入: "aab"输出:[ ["aa","b"], ["a","a","b"]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/palindrome-partitioning方法:递归与回溯思想很简单,就是从第一个字符...原创 2020-04-06 11:11:53 · 98 阅读 · 0 评论 -
leetcode--93复原IP地址(001)
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。示例: 输入: "25525511135" 输出: ["255.255.11.135", "255.255.111.35"来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/restore-ip-addresses方法1:(在leetcode上测试,只超过了5%的用户...原创 2020-04-06 09:28:57 · 174 阅读 · 0 评论 -
leetcode--17电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。来源:力扣(LeetCode)链接:h...原创 2020-04-05 21:17:10 · 145 阅读 · 0 评论 -
leetcode刷题汇总(持续更新)
就要找工作了,从此漫漫刷题路,受Grandyang启发,记录自己的做题之旅。刷题开始的有点晚,希望从现在坚持下去,平均每天更新2道题。题号分类题名283数组移动080数组删除重复项75数组、快排颜色分类27数组移除val元素26数组去重...原创 2020-04-05 15:13:47 · 412 阅读 · 1 评论 -
leetcode--236二叉树的最近公共祖先(001001)
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]![在这里插入图片描述](https://imgco...原创 2020-04-05 14:57:33 · 69 阅读 · 0 评论 -
leetcode--230二叉搜索树第k小的元素(001)
给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \1 4\ 2输出: 1示例 2:输入: root = [5,3,6,2,4,null,null,1], k = 3 ...原创 2020-04-03 18:29:51 · 83 阅读 · 0 评论 -
leetcode--108将有序数组转换为二叉搜索树(001)
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / /-10 5来源:力扣(...原创 2020-04-03 17:13:43 · 55 阅读 · 0 评论 -
leetcode--450删除二叉搜索树的节点(001)
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤首先找到需要删除的节点;如果找到了,删除它。说明: 要求算法时间复杂度为 O(h),h 为树的高度。示例:root = [5,3,6,2,4,null,7]key = 3 5 ...原创 2020-04-02 18:19:57 · 60 阅读 · 0 评论 -
leetcode--98验证搜索二叉树(001)
给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \1 3输出: true示例 2:输入: 5 / \1 4 / \ 3 6输出: false解释: 输入为: [5...原创 2020-04-02 16:12:24 · 85 阅读 · 0 评论 -
leetcode--235二叉搜索树的最近公共祖先
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5] 示例 1:输入: root = [6...原创 2020-04-02 15:13:11 · 74 阅读 · 0 评论 -
leetcode--437 路径总和
给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8 1...原创 2020-04-02 14:46:54 · 100 阅读 · 0 评论 -
leetcode--129求根到叶子结点的和
给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3] 1 / \2 3输出: 25解释:从根到叶子节点路径 1->2 代表数字 12.从根到...原创 2020-04-02 11:08:10 · 72 阅读 · 0 评论