LeetCode
jaywangpku
专注于后台开发,对数据库,文件系统,云存储,分布式图计算框架与信息学竞赛亦感兴趣。
展开
-
【力扣LeetCode】124 二叉树中的最大路径和
题目描述(难度难)路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。链接https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/代码/** * Definition for a binary tree node.原创 2021-04-11 19:34:00 · 390 阅读 · 0 评论 -
【力扣LeetCode】76 最小覆盖子串
题目描述(难度难)给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。注意:如果 s 中存在这样的子串,我们保证它是唯一的答案。示例 1:输入:s = “ADOBECODEBANC”, t = “ABC”输出:“BANC”示例 2:输入:s = “a”, t = “a”输出:“a”提示:1 <= s.length, t.length <= 105s 和 t 由英文字母组成进阶原创 2021-04-11 18:43:08 · 168 阅读 · 0 评论 -
【力扣LeetCode】146 LRU 缓存机制
题目描述(难度中)运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限时,它应该在写原创 2021-04-11 17:22:02 · 158 阅读 · 0 评论 -
【力扣LeetCode】35 搜索插入位置
题目描述(难度易)给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: ...原创 2020-02-15 15:53:13 · 160 阅读 · 0 评论 -
【力扣LeetCode】17 电话号码的字母组合
题目描述(难度中)给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。链接https:/...原创 2019-06-04 13:32:52 · 274 阅读 · 0 评论 -
【力扣LeetCode】33 搜索旋转排序数组
题目描述(难度中)假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [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,...原创 2019-06-10 23:02:08 · 247 阅读 · 0 评论 -
【力扣LeetCode】19 删除链表的倒数第N个节点
题目描述(难度中)给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?链接https://leetcode-cn.com/probl...原创 2019-06-04 20:42:36 · 217 阅读 · 0 评论 -
【力扣LeetCode】21 合并两个有序链表
题目描述(难度易)将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4链接https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/思路...原创 2019-06-04 20:58:35 · 169 阅读 · 0 评论 -
【力扣LeetCode】22 括号生成
题目描述(难度中)给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]链接https://leetcode-cn.com/problems/generate-parentheses/思路显然用栈添加左括号,在...原创 2019-06-04 21:41:52 · 348 阅读 · 0 评论 -
【力扣LeetCode】23 合并K个排序链表
题目描述(难度难)合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6链接https://leetcode-cn.com/problems/merge-k-sorted-lists...原创 2019-06-04 22:37:55 · 360 阅读 · 0 评论 -
【力扣LeetCode】14 最长公共前缀
题目描述(难度易)编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。链接https://leetcode-c...原创 2019-06-04 23:11:23 · 402 阅读 · 0 评论 -
【力扣LeetCode】34 在排序数组中查找元素的第一个和最后一个位置
题目描述(难度中)给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,8,8...原创 2019-06-11 14:14:39 · 176 阅读 · 0 评论 -
【力扣LeetCode】31 下一个排列
题目描述(难度中)实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1链接https://leetcode-...原创 2019-06-05 00:43:10 · 318 阅读 · 0 评论 -
【力扣LeetCode】104 二叉树的最大深度
题目描述(难度易)给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。链接https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/思路1、通过递归...原创 2019-08-01 13:25:15 · 260 阅读 · 0 评论 -
【力扣LeetCode】15 三数之和
题目描述(难度中)给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]链接https:...原创 2019-06-03 22:27:18 · 198 阅读 · 0 评论 -
【力扣LeetCode】10 正则表达式匹配
题目描述(难度难)给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s =...原创 2019-06-03 18:41:45 · 1180 阅读 · 1 评论 -
【力扣LeetCode】4 寻找两个有序数组的中位数
题目描述(难度难)给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位...原创 2019-05-30 15:06:27 · 273 阅读 · 0 评论 -
【力扣LeetCode】5 最长回文子串
题目描述(难度中)给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”链接https://leetcode-cn.com/problems/longest-palindromic-substring/思路1...原创 2019-05-30 16:01:56 · 203 阅读 · 0 评论 -
【力扣LeetCode】7 整数反转
题目描述(难度易)给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。链接htt...原创 2019-05-30 16:22:17 · 285 阅读 · 0 评论 -
【力扣LeetCode】6 Z 字形变换
题目描述(难度中)将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRow...原创 2019-05-30 17:16:59 · 304 阅读 · 0 评论 -
【力扣LeetCode】53 最大子序和
题目描述(难度易)给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。链接https://leetcode-cn.com/...原创 2019-06-05 13:50:14 · 185 阅读 · 0 评论 -
【力扣LeetCode】20 有效的括号
题目描述(难度易)给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例...原创 2019-05-31 13:11:31 · 163 阅读 · 0 评论 -
【力扣LeetCode】8 字符串转换整数 (atoi)
题目描述(难度中)请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字...原创 2019-05-31 14:43:26 · 148 阅读 · 0 评论 -
【力扣LeetCode】9 回文数
题目描述(难度易)判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数...原创 2019-06-01 12:34:00 · 115 阅读 · 0 评论 -
【力扣LeetCode】11 盛最多水的容器
题目描述(难度中)给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够...原创 2019-06-01 13:12:48 · 224 阅读 · 0 评论 -
【力扣LeetCode】2 两数相加(链表)
题目描述(难度中)给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 ->...原创 2019-05-29 16:53:46 · 225 阅读 · 0 评论 -
【力扣LeetCode】1 两数之和
题目描述(难度易)给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]链...原创 2019-05-29 17:30:35 · 142 阅读 · 0 评论 -
【力扣LeetCode】32 最长有效括号
题目描述(难度难)给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: “(()”输出: 2解释: 最长有效括号子串为 “()”示例 2:输入: “)()())”输出: 4解释: 最长有效括号子串为 “()()”链接https://leetcode-cn.com/problems/longest-valid-parentheses...原创 2019-06-07 15:03:42 · 303 阅读 · 0 评论 -
【力扣LeetCode】300 最长上升子序列
题目描述(难度中)给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(nlogn) 吗?链接h...原创 2019-06-07 16:54:24 · 1036 阅读 · 0 评论 -
【力扣LeetCode】3 无重复字符的最长子串
题目描述(难度中)给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子...原创 2019-05-30 13:38:55 · 154 阅读 · 0 评论