![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode笔记
文章平均质量分 75
chenxy132
这个作者很懒,什么都没留下…
展开
-
LeetCode笔记——107二叉树层次遍历Ⅱ
题目:给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]集合方面还是比较懵。。...原创 2018-08-31 15:46:14 · 506 阅读 · 0 评论 -
LeetCode笔记——104二叉树的最大深度
题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。思路:对于节点root来说,当root=null时,树的最大深度d(...原创 2018-08-31 15:18:37 · 127 阅读 · 0 评论 -
LeetCode笔记——136只出现一次的数字&剑指56(1)
题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4思路:我是按照分组标签的形式做题的,这道题属于哈希表一类的,但是不知道怎么用哈希表写程序...原创 2018-09-04 09:53:43 · 111 阅读 · 0 评论 -
LeetCode笔记——108将有序数组转化为二叉树
题目:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / ...原创 2018-09-01 09:39:07 · 989 阅读 · 0 评论 -
LeetCode笔记——110平衡二叉树
题目:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null...原创 2018-09-01 10:31:03 · 209 阅读 · 0 评论 -
LeetCode笔记——100相同的树
题目:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: ...原创 2018-08-30 10:18:12 · 106 阅读 · 0 评论 -
LeetCode笔记——101对称二叉树
题目:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3说明:如果你可以运用递归和迭代...原创 2018-08-30 15:07:41 · 131 阅读 · 0 评论 -
LeetCode笔记——205同构字符串
题目:给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例 1:输入: s = "egg"t = "add"输出: true示例 2:输入: s = "foo", t = "bar"...原创 2018-09-05 10:06:06 · 350 阅读 · 0 评论 -
LeetCode笔记——203删除链表中的元素
题目:删除链表中等于给定值val的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5思路:我自己想的是判断当前节点temp的下一个节点temp.next是否等于val,如果相等就将temp.next.next赋给temp.next。对链表的第一个节点...原创 2018-09-11 15:15:49 · 108 阅读 · 0 评论 -
LeetCode笔记——20有效的括号
题目:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: f...原创 2018-09-05 15:30:54 · 88 阅读 · 0 评论 -
LeetCode笔记——2两数相加
题目:给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807思路:基本上和之前做的加...原创 2018-09-11 16:38:41 · 133 阅读 · 0 评论 -
LeetCode笔记——111二叉树的最小深度
题目:给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.思路:这个题和求二叉树的最大深度刚好相反。不过对于一些特殊的用例要...原创 2018-09-03 09:28:53 · 152 阅读 · 0 评论 -
LeetCode笔记——112路径总和
题目:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 ...原创 2018-09-03 09:49:40 · 162 阅读 · 0 评论 -
LeetCode笔记——21合并两个有序链表
题目:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路:这道题是关于链表的题,链表 对象相关操作还是不怎么熟悉。。。首先判断两者是否为空,返回不为空的那一个链表。然后依次比较两个链表对应位置的...原创 2018-09-06 15:45:55 · 92 阅读 · 0 评论 -
LeetCode笔记——83排除链表中的重复元素
题目:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例1:输入: 1->1->2输出: 1->2示例2:输入: 1->1->2->3->3输出: 1->2->3思路:题目中给出的已经是排序后的链表。因此可以直接遍历链表的每个元素,比较每个值与后一个值是否相等。若相等,则改变链接。对链表还是...原创 2018-09-06 16:32:06 · 99 阅读 · 0 评论 -
LeetCode笔记——3.无重复字符的最长子串
题目:给定一个字符串,找出不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3 解释: 无重复字符的最长子串是 "abc",其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 无重复字符的最长子串是 "b",其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 无重复字符的最长子串是"wke",...原创 2018-09-12 10:51:00 · 180 阅读 · 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]]思...原创 2018-09-16 09:53:05 · 122 阅读 · 0 评论 -
LeetCode笔记——16最接近的三数之和
题目:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).思路:基本上和之前15...原创 2018-09-16 10:54:15 · 106 阅读 · 0 评论 -
LeetCode笔记——电话号码的字母组合
题目:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].思路原创 2018-09-17 15:10:39 · 209 阅读 · 0 评论 -
LeetCode笔记——5最长回文子串
题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设s 的最大长度为1000。示例 1:输入: "babad"输出: "bab"注意: "aba"也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"思路:看着都好复杂。。。。我只看懂有程序的一两个就算了。。。。做第二次还是没有啥思路。。。。。。再一次做还是没有思路。。。。。重新...原创 2018-09-12 15:41:14 · 156 阅读 · 0 评论 -
LeetCode笔记——18四数之和
题目:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的...原创 2018-09-17 09:39:36 · 111 阅读 · 0 评论 -
LeetCode笔记——19删除链表的倒数第N个节点
题目:给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n保证是有效的。进阶:你能尝试使用一趟扫描实现吗?思路:一碰见链表类的我脑子就懵。。。。在网上找了大...原创 2018-09-17 11:09:47 · 106 阅读 · 0 评论 -
LeetCode笔记——141环形链表
题目:给定一个链表,判断链表中是否有环。进阶:你能否不使用额外空间解决此题?思路:我本来自己想的是在环形链表中。每一个节点的下一个节点都不可能为空。若为空的话返回false;若不为空的话,继续循环,知道循环次数等于链表的个数。实际上链表中的节点个数并不已知,所以该方法不可以。然后就直接看了leetcode中的解答,有两种思路,如下;思路1:使用哈希表创建hashset存放节点...原创 2018-09-07 10:08:35 · 175 阅读 · 0 评论 -
LeetCode笔记——22括号的生成
题目:给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]以下是根据leetcode中的解答整理的思路:思路1:回溯法 有一些像排列组合的思想。首先添加的第一个一定是个左括号...原创 2018-09-18 10:03:51 · 569 阅读 · 0 评论 -
LeetCode笔记——160相交链表 &&剑指52
题目:编写一个程序,找到两个单链表相交的起始节点。例如,下面的两个链表:A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3在节点 c1 开始相交。注意:如果...原创 2018-09-07 16:12:28 · 107 阅读 · 0 评论 -
LeetCode笔记——两两交换表中的节点
题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.说明:你的算法只能使用常数的额外空间。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 思路:链表和指针在一起就更晕了。。。。直接百度了大神们的代码,先看懂代码。代码:clas...原创 2018-09-18 10:59:00 · 155 阅读 · 0 评论 -
LeetCode笔记——6Z字形变换
题目:将字符串"PAYPALISHIRING"以Z字形排列成给定的行数:P A H NA P L S I I GY I R之后从左往右,逐行读取字符:"PAHNAPLSIIGYIR"实现一个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例1:输入: s = "PAYPA...原创 2018-09-13 09:54:06 · 145 阅读 · 0 评论 -
LeetCode笔记——8字符串转整数
题目:实现 atoi,将字符串转为整数。在找到第一个非空字符之前,需要移除掉字符串中的空格字符。如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值。如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,它们对于函数没有影响。当字符串中的第...原创 2018-09-13 10:42:48 · 78 阅读 · 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,...原创 2018-09-23 10:51:30 · 96 阅读 · 0 评论 -
LeetCode笔记——29两数相除
题目:给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。示例 1:输入: dividend = 10, divisor = 3输出: 3示例 2:输入: dividend = 7, divisor = -3输出: -2说明:被除...原创 2018-09-19 09:59:39 · 159 阅读 · 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]。在此情况下,容器能...原创 2018-09-14 09:32:11 · 141 阅读 · 0 评论 -
LeetCode笔记——12整数转罗马数字
题目:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个...原创 2018-09-14 10:55:07 · 94 阅读 · 0 评论 -
LeetCode笔记——50Pow(x,n)
题目:实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x &l...原创 2018-10-11 09:46:48 · 99 阅读 · 0 评论 -
LeetCode笔记——54螺旋矩阵
题目:给定一个包含m x n个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例1:输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例2:输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,1...原创 2018-10-11 10:45:23 · 234 阅读 · 0 评论 -
LeetCode笔记——55跳跃游戏
题目:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引...原创 2018-10-13 10:42:44 · 111 阅读 · 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,...原创 2018-10-07 10:11:42 · 207 阅读 · 0 评论 -
LeetCode笔记——39组合总和
题目:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。 解集不能包含重复的组合。 示例 1:输入: candidates = [2,3,6,7], target = 7,...原创 2018-10-07 11:27:48 · 146 阅读 · 0 评论 -
LeetCode笔记——56合并区间&字节跳动面试题2
题目:给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠...原创 2018-10-14 10:22:56 · 177 阅读 · 0 评论 -
LeetCode笔记——40组合总和Ⅱ
题目:给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。 示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所...原创 2018-10-08 11:03:56 · 144 阅读 · 0 评论 -
LeetCode笔记——71简化路径
题目:给定一个文档 (Unix-style) 的完全路径,请进行路径简化。例如,path = "/home/", => "/home"path = "/a/./b/../../c/", => "/c"边界情况:你是否考虑了 路径 = "/../" 的情况? 在这种情况下,你需返回 "/" 。 此外,路径中也可能包含多个斜杠 '/' ,如 &q原创 2018-10-18 10:51:40 · 149 阅读 · 0 评论