
LeetCode
文章平均质量分 71
.REVOLUTION.
这个作者很懒,什么都没留下…
展开
-
leetcode_二叉树的前序遍历、中序遍历、后序遍历、层次遍历--递归/非递归实现 & C++11新特性 emplace
题目:专题链接:https://leetcode-cn.com/leetbook/read/data-structure-binary-tree/x63shc/前序遍历:https://leetcode-cn.com/leetbook/read/data-structure-binary-tree/xeywh5/中序遍历:后序遍历:层次遍历:思路:首推很不错的文章:https://leetcode-cn.com/problems/binary-tree-preorder.原创 2021-02-21 10:39:33 · 294 阅读 · 0 评论 -
leetcode116. 填充每个节点的下一个右侧节点指针
题目给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。进阶:你只能使用常量级额外空间。使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复原创 2021-02-21 09:23:00 · 128 阅读 · 0 评论 -
剑指 Offer 28. 对称的二叉树
题目:请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树[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示例 1:输入:root = [1,2,2,3,4,4,3]输出:true示例 2:...原创 2021-02-19 22:24:06 · 131 阅读 · 0 评论 -
剑指 Offer 22. 链表中倒数第 k 个节点 & 双指针问题
题目输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 2 个节点是值为 4 的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.作者:Krahets链接:https://leetcode-cn.com/leetbook/read/illustration原创 2021-02-16 21:33:49 · 144 阅读 · 0 评论 -
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面& C malloc/calloc & 位运算
题目输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。提示:1 <= nums.length <= 500001 <= nums[i] <= 10000作者:Krahets链接:https://leetcode-cn.com/leetbook/read/illustration-of-a原创 2021-02-14 12:06:02 · 235 阅读 · 0 评论 -
剑指 Offer 30. 包含 min 函数的栈 & C++stack & python stack
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop();minStack.top(); --> 返...原创 2021-02-13 10:29:18 · 249 阅读 · 1 评论 -
剑指 Offer 09. 用两个栈实现队列 &Python stack & C++ stack
题目用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入: [“CQueue”,“appendTail”,“deleteHead”,“deleteHead”] [[],[3],[],[]]输出:[null,null,3,-1] 示例 2:输入:[“CQueue”,“deleteHead”,“appendTail”原创 2021-02-11 08:54:12 · 278 阅读 · 0 评论 -
剑指 Offer 06 题目解析 &C++stack & C++ vector
题目输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2] 输出:[2,3,1]限制:0 <= 链表长度 <= 10000作者:Krahets链接:https://leetcode-cn.com/leetbook/read/illustration-of-algorithm/5dt66m/来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。思路思路一: 栈,先进后出原创 2021-02-10 15:19:55 · 165 阅读 · 0 评论 -
剑指 Offer 05. 替换空格 & C++ String
题目请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”限制:0 <= s 的长度 <= 10000作者:Krahets链接:https://leetcode-cn.com/leetbook/read/illustration-of-algorithm/50ywkd/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。思原创 2021-02-10 10:04:04 · 387 阅读 · 1 评论 -
leet124. 二叉树中的最大路径和 & 后序遍历
题目:路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。示例 1:输入:root = [1,2,3]输出:6解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6示例 2:输入:root = [-10,9,20,null,null,15,7]输出:42.原创 2021-02-08 13:34:11 · 477 阅读 · 1 评论 -
leet172. 阶乘后的零& M
题目:给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释:3! = 6, 尾数中没有零。示例2:输入: 5输出: 1解释:5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为O(logn)。作者:字节校园链接:https://leetcode-cn.com/leetbook/read/bytedance-c01/ei6om6/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商...原创 2021-02-07 14:08:05 · 97 阅读 · 0 评论 -
leet105. 从前序与中序遍历序列构造二叉树 &106. 从中序与后序遍历序列构造二叉树& STL vector拓展_V2 & unordered_map
题目思路拓展STL vector常用方法总结参考链接:参考一:参考二:源码原创 2021-02-06 22:40:24 · 154 阅读 · 0 评论 -
leet617. 合并二叉树&二叉树的遍历方法-先序、中序、后序、层次(递归)&非递归实现
题目:给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL的节点将直接作为新二叉树的节点。示例 1:输入: Tree 1 Tree 21 2/ \ / \3 2原创 2021-02-02 10:38:00 · 223 阅读 · 0 评论 -
leet257.二叉树遍历所有路径&树的深度优先遍历、广度优先遍历&c++ nullptr
题目:给定一个二叉树,返回所有从根节点到叶子节点的路径。说明:叶子节点是指没有子节点的节点。示例:输入: 1/ \2 3\ 5输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-paths著作权归领扣网络所有。商业转载请...原创 2021-01-28 16:51:03 · 296 阅读 · 0 评论 -
leet209. 长度最小的子数组 &滑动窗口
题目:给定一个含有n个正整数的数组和一个正整数s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。示例:输入:s = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组[4,3]是该条件下的长度最小的子数组。进阶:如果你已经完成了 O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法。来源:力扣(LeetCode)链接:https://leetcode-...原创 2020-12-25 14:50:03 · 200 阅读 · 0 评论 -
leet27. 移除元素 & 双指针
D. Tran, L. Bourdev, R. Fergus, L. Torresani, M. Paluri. Learning Spatiotemporal Features with 3D Convolutional Networks. In ICCV, 2015.S. Ji, W. Xu, M. Yang, and K. Yu. 3d convolutional neural networks for human action recognition. IEEE TPAMI, 35(1):221原创 2020-12-22 12:18:14 · 259 阅读 · 0 评论 -
leet3. 无重复字符的最长子串 & C++ string长度 &滑动窗口&C++ STL unordered_set
题目:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,...原创 2020-12-02 10:52:45 · 181 阅读 · 0 评论 -
leet485. 最大连续1的个数
题目:给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含0 和1。输入数组的长度是正整数,且不超过 10,000。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/max-consecutive-ones著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思.原创 2020-11-30 13:53:23 · 215 阅读 · 0 评论 -
leet2. 两数相加 & 链表-头结点
题目:给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807来源:力扣(LeetCode)链接:https...原创 2020-11-24 15:13:52 · 208 阅读 · 0 评论 -
leet167. 两数之和 II - 输入有序数组 & 双指针
题目:给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1必须小于index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], target = 9输出: [1,2]解释: 2 与 7 之和等于目标数 9 。因此 index1...原创 2020-11-23 12:40:51 · 123 阅读 · 0 评论 -
leet45. 跳跃游戏 II & 贪心算法
题目:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳1步,然后跳3步到达数组的最后一个位置。说明:假设你总是可以到达数组的最后一个位置。来源:力扣(LeetCode)链接:https://leetcode-cn.com...原创 2020-11-19 09:38:01 · 229 阅读 · 0 评论 -
leet561. 数组拆分 I & 快排 & python sum() & sorted()&切片
题目:给定长度为2n的整数数组 nums ,你的任务是将这些数分成n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从 1 到n 的 min(ai, bi) 总和最大。返回该 最大总和 。示例 1:输入:nums = [1,4,3,2]输出:4解释:所有可能的分法(忽略元素顺序)为:1. (1, 4), (2, 3) -> min(1, 4) + min(2, 3) = 1 + 2 = 32. (1, 3), (2, 4)...原创 2020-11-17 16:00:41 · 367 阅读 · 0 评论 -
leet56.合并区间
题目:思路:拓展:c++ sort函数https://xulinjie.blog.youkuaiyun.com/article/details/76222112原创 2020-11-12 10:38:40 · 137 阅读 · 0 评论 -
leet4. 寻找两个正序数组的中位数 & STL vector
题目:思路:拓展:C++ vector 零散知识点1、vector 的六种 创建和初始化方法(1): vector<int> ilist1; 默认初始化,vector为空, size为0,表明容器中没有元素,而且 capacity 也返回 0,意味着还没有分配内存空间。这种初始化方式适用于元素个数未知,需要在程序中动态添加的情况。(2): vector<int> ilist2(ilist);vector<int> ilist2 = ...原创 2020-11-10 10:01:33 · 282 阅读 · 0 评论 -
leet面试题 01.07. 旋转矩阵
题目:给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 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,11], [ 2, 4, 8,10], [13, 3, ...原创 2020-11-09 12:09:51 · 250 阅读 · 1 评论 -
leet171. Excel表列序号
题目:给定一个Excel表格中的列名称,返回其相应的列序号。例如, A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例 1:输入: "A"输出: 1示例2:输入: "AB"输出: 28示例3:输入: "ZY"输出: 701来源:力扣(LeetCode)链接:https://leetcode-cn.com...原创 2020-11-04 15:05:23 · 200 阅读 · 0 评论 -
leet58. 最后一个单词的长度
题目:给定一个仅包含大小写字母和空格' '的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/length-of-last-word著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路:思路一:c语言...原创 2020-11-04 09:55:06 · 137 阅读 · 0 评论 -
leet31. 下一个排列
题目:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/next-permutation著作权归领扣网络原创 2020-11-03 12:53:31 · 154 阅读 · 0 评论 -
leet198.打家劫舍
题目:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。示例...原创 2020-11-02 10:47:34 · 227 阅读 · 0 评论 -
leet25.K 个一组翻转链表
题目:给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当k= 2 时,应当返回: 2->1->4->3->5当k= 3 时,应当返回: 3->2->1->4->5说明:你的算法只能使用常数的额外空间。你不能...原创 2020-10-30 10:42:38 · 114 阅读 · 0 评论 -
leet面试题 01.08. 零矩阵
编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。示例 1:输入:[ [1,1,1], [1,0,1], [1,1,1]]输出:[ [1,0,1], [0,0,0], [1,0,1]]示例 2:输入:[ [0,1,2,0], [3,4,5,2], [1,3,1,5]]输出:[ [0,0,0,0], [0,4,5,0], [0,3,1,0]]来源:力扣(LeetCode)链接:https://le...原创 2020-10-27 16:03:32 · 168 阅读 · 0 评论 -
leet724. 寻找数组的中心索引-----前缀和
问题:给定一个整数类型的数组nums,请编写一个能够返回数组 “中心索引” 的方法。我们是这样定义数组 中心索引 的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例 1:输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:索引 3 (nums[3] = 6) 的左侧数之和 (1 + 7 + 3 = 11),与右侧数之和 (5 + ..原创 2020-07-30 20:08:46 · 189 阅读 · 0 评论 -
leet98. 验证二叉搜索树
题目:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例1:输入: 2 / \ 1 3输出: true示例2:输入: 5 / \ 1 4 / \ 3 6输出: false解释: 输入为: [5,1,4,null,null,3,6]。 根节点的值为 ...原创 2020-05-29 12:18:02 · 191 阅读 · 0 评论 -
leet38.外观数列
问题外观数列「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:1. 12. 113. 214. 12115. 1112211被读作"one 1"("一个一") , 即11。11被读作"two 1s"("两个一"), 即21。21被读作"one 2", "one 1"("一个二","一个一"), 即1211。给定一个正整数n(1 ≤n≤ 30),输出外观...原创 2020-05-23 14:57:56 · 218 阅读 · 0 评论 -
leet7.整数翻转
问题:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。拓展:个人本地测试过long和int内置类型的大小,当发现都为4字节。long并没有提供更大的存储...原创 2020-05-15 13:28:22 · 175 阅读 · 0 评论 -
leet104.二叉树的最大深度 & 二叉树的遍历方法-先序、中序、后序、层次
题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7],返回它的最大深度3 。拓展:二叉树的遍历方法二叉树的遍历: 二叉树的遍历是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次...原创 2020-05-02 17:36:31 · 372 阅读 · 0 评论 -
leet141. 环形链表
题目:给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [1,2], pos =...原创 2020-04-26 17:56:07 · 169 阅读 · 0 评论 -
leet234. 回文链表
题目:回文链表请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用O(n) 时间复杂度和 O(1) 空间复杂度解决此题?/**Problem: 回文链表 请判断一个链表是否为回文链表。 @author:G...原创 2020-04-25 14:14:18 · 137 阅读 · 0 评论 -
leet21. 合并两个有序链表
题目将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted...原创 2020-04-24 16:00:47 · 216 阅读 · 0 评论 -
leet19. 删除链表的倒数第N个节点
题目给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n保证是有效的。进阶:你能尝试使用一趟扫描实现吗?来源:力扣(LeetCode)链接:https://leet...原创 2020-04-21 16:37:48 · 162 阅读 · 0 评论