自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yangyangcome的博客

你的任性必须配得上你有本事

  • 博客(341)
  • 收藏
  • 关注

原创 秋招春招总结,经验分享(计算机专业)

我很庆幸在七年前选择了计算机专业,虽然选专业完全是听从了命运的安排,直接滑档到了第五个志愿,但是我还是很感谢命运给我这样的安排,遇到了我的本科导师还有几个很好的老师,遇到了几个很好的朋友,回想起来,真好。也正因为本科学校有保研资格,我通过不懈努力来了我的研究生学校,选择了我喜欢的方向,做着学术研究,对我自己的领域说不上如数家珍,也可以算得上有了深入了解。有了一定的研究成果以及研究项目,转眼之间到了毕业的时候,毕业之前经历了漫长的找工作之旅,这趟旅程里充满了焦虑不安以及后悔。找工作的时候很迷茫,不知道选择哪

2022-04-23 15:49:43 2253

原创 leetcode 415. 字符串相加

415. 字符串相加给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。示例 1:输入:num1 = “11”, num2 = “123”输出:“134”示例 2:输入:num1 = “456”, num2 = “77”输出:“533”示例 3:输入:num1 = “0”, num2 = “0”输出:“0”模拟实际数学中计算两个数的过程,

2021-10-22 21:06:31 309

原创 LeetCode32. 最长有效括号

32. 最长有效括号给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = “(()”输出:2解释:最长有效括号子串是 “()”示例 2:输入:s = “)()())”输出:4解释:最长有效括号子串是 “()()”示例 3:输入:s = “”输出:0技巧题,思路别的地方用不到首先初始化start=-1;遇到左括号,将左括号对应的下标入栈如果遇到右括号,那么需要将栈顶元素弹出,弹出之后如果栈顶元素是空,那么说明最长的

2021-09-21 19:07:18 242

原创 leetcode 442. 数组中重复的数据

442. 数组中重复的数据给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。找到所有出现两次的元素。你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?示例:输入:[4,3,2,7,8,2,3,1]输出:[2,3]使用对应位置,当一个数出现的时候,那么对应位置的数置位相反数,如果当一个数为正数,那么表明该数在前面出现过。数组下标是从0开始的,数字范围是1开始的,下标设置的时候是减去一的,然后将对应位置的数取成相反数。cla

2021-09-21 14:52:12 280

原创 LeetCode 406. 根据身高重建队列(贪心)

406. 根据身高重建队列假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。请你重新构造并返回输入数组 people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。示例 1:输入:people = [

2021-09-21 09:40:14 89

原创 leetcode 384. 打乱数组(随机种子)

384. 打乱数组给你一个整数数组 nums ,设计算法来打乱一个没有重复元素的数组。实现 Solution class:Solution(int[] nums) 使用整数数组 nums 初始化对象int[] reset() 重设数组到它的初始状态并返回int[] shuffle() 返回数组随机打乱后的结果示例:输入[“Solution”, “shuffle”, “reset”, “shuffle”][[[1, 2, 3]], [], [], []]输出[null, [3, 1, 2]

2021-09-20 16:32:50 327

原创 LeetCode 115. 不同的子序列(DP)

115. 不同的子序列给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)题目数据保证答案符合 32 位带符号整数范围。dp[i][j] 表示以i-1结尾的s子序列中出现以j-1结尾的个数,状态转移方程如下:当s[i-1]==t[j-1] 时,那么该字符可以使用s[i-1]来匹配,也可以不使用s

2021-09-20 16:15:07 109

原创 letcode 768. 最多能完成排序的块 II (贪心)

768. 最多能完成排序的块 II这个问题和“最多能完成排序的块”相似,但给定数组中的元素可以重复,输入数组最大长度为2000,其中的元素最大为10**8。arr是一个可能包含重复元素的整数数组,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。我们最多能将数组分成多少块?示例 1:输入: arr = [5,4,3,2,1]输出: 1解释:将数组分成2块或者更多块,都无法得到所需的结果。例如,分成 [5, 4], [3, 2, 1

2021-09-20 11:13:24 94

原创 leetcode 529. 扫雷游戏(dfs)

529. 扫雷游戏给定一个代表游戏板的二维字符矩阵。 ‘M’ 代表一个未挖出的地雷,‘E’ 代表一个未挖出的空方块,‘B’ 代表没有相邻(上,下,左,右,和所有4个对角线)地雷的已挖出的空白方块,数字(‘1’ 到 ‘8’)表示有多少地雷与这块已挖出的方块相邻,‘X’ 则表示一个已挖出的地雷。现在给出在所有未挖出的方块中(‘M’或者’E’)的下一个点击位置(行和列索引),根据以下规则,返回相应位置被点击后对应的面板:如果一个地雷(‘M’)被挖出,游戏就结束了- 把它改为 ‘X’。如果一个没有相邻地雷的

2021-09-15 08:55:09 151

原创 leetcode 394. 字符串解码(递归)

题目描述给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。示例 1:输入:s = “3[a]2[bc]”输出:“aaabcbc”示例 2:输入:s =

2021-09-14 11:45:58 273

原创 leetcode 905. 按奇偶排序数组(快排的思路)

题目描述给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。你可以返回满足此条件的任何数组作为答案。示例:输入:[3,1,2,4]输出:[2,4,3,1]输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。快排的思路:快排基本思路是将基准x的左边为小于x的,右边为大于x的,现在可以使用这个基本思路,将左边放置偶数,右边放置奇数。class Solution {public: vector<int> s

2021-09-09 20:16:35 200

原创 leetcode 53 最大子序和 and 面试题 17.24. 最大子矩阵(DP)

53. 最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0示例 4:输入:nums = [-1]输出:-1示例 5:输入:nums = [-100000]输出:-100000可以使用

2021-09-09 16:26:29 122

原创 leetcode 165. 比较版本号

题目描述给你两个版本号 version1 和 version2 ,请你比较它们。版本号由一个或多个修订号组成,各修订号由一个 ‘.’ 连接。每个修订号由 多位数字 组成,可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 ,以此类推。例如,2.5.33 和 0.1 都是有效的版本号。比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较 忽略任何前导零后的整数值 。也就是说,修订号 1 和修订号

2021-09-09 10:45:34 112

原创 leetcode 93. 复原 IP 地址(回溯)

题目描述给定一个只包含数字的字符串,用以表示一个 IP 地址,返回所有可能从 s 获得的 有效 IP 地址 。你可以按任何顺序返回答案。有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “[email protected]” 是 无效 IP 地址。示例 1:输入:s = “25525

2021-09-09 10:29:07 170

原创 leetcode 118 杨辉三角 and 119杨辉三角Ⅱ(01背包优化部分)

题目描述给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 1:输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:输入: numRows = 1输出: [[1]]提示:1 <= numRows <= 30class Solution {public: vector<vector<int>&

2021-09-09 09:26:21 77

原创 LeetCode 787. K 站中转内最便宜的航班 (Bellman-Ford算法)

题目描述有 n 个城市通过一些航班连接。给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,以价格 pricei 抵达 toi。现在给定所有的城市和航班,以及出发城市 src 和目的地 dst,你的任务是找到出一条最多经过 k 站中转的路线,使得从 src 到 dst 的 价格最便宜 ,并返回该价格。 如果不存在这样的路线,则输出 -1。示例 1:输入:n = 3, edges = [[0,1,100],

2021-09-07 08:51:48 622

原创 LeetCode 662. 二叉树最大宽度(层序遍历)

题目描述给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空。每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度。示例 1:输入: 1 / \ 3 2 / \ \ 5 3 9 输出: 4解释: 最大值出现在树的第 3 层,宽度为 4 (5,3,null,9)。

2021-08-26 09:45:36 392

原创 面试高频题-双栈排序

题目描述给定一个乱序的栈,设计算法将其升序排列。ps: 允许额外使用一个栈来辅助操作输入[4, 2, 1, 3]输出[1, 2, 3, 4]思路:给定一个栈的所有元素,借助于另一个栈,实现排序,另一个栈的元素是有序的,如果当前栈的元素栈顶元素 t 小于辅助栈的栈顶元素,那么需要将辅助栈的栈顶元素取出,然后将该较小值加入到辅助栈中,将栈顶元素加入当前栈,在实际排序中有可能遇到辅助栈中好多元素都比当前栈顶元素大,因此需要不断地寻找,使用循环来解决,等辅助栈的栈顶元素小于 t ,将 t 放入到辅助栈

2021-08-25 09:16:21 140

原创 LeetCode 724. 寻找数组的中心下标(前缀和)

题目描述给你一个整数数组 nums ,请计算数组的 中心下标 。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1 。示例 1:输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:中心下标是 3 。左侧数之和 sum = nums[0

2021-08-23 14:47:59 201

原创 leetcode 226. 翻转二叉树

class Solution {public: TreeNode* invertTree(TreeNode* root) { dfs(root); return root; } void dfs(TreeNode* root) { if(!root) return; swap(root->right,root->left); dfs(root->left).

2021-08-23 11:45:12 71

原创 leetcode 73. 矩阵置零

题目描述给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。进阶:一个直观的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。你能想出一个仅使用常量空间的解决方案吗?示例 1:输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:m

2021-08-23 11:34:10 89

原创 LeetCode 611. 有效三角形的个数(双指针)

题目描述给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。示例 1:输入: [2,2,3,4]输出: 3解释:有效的组合是:2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,3注意:数组长度不超过1000。数组里整数的范围为 [0, 1000]。需要确定三个数字,首先确定其中两个,然后再判断剩余的那个,首先确定 i , j ,其中i > j,然后要在小于 j 的部分确定 k,构成的是三角形,那么任意两边之和大于第三边,也就是1)

2021-08-23 10:25:09 135

原创 LeetCode 40. 组合总和 II (回溯)

题目描述给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。注意:解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,输出:[[1,1,6],[1,2,5],[1,7],[2,6]]示例 2:输入: candidates = [2,5,2,1,2], target =

2021-08-22 15:41:53 79

原创 leetcode 55 跳跃游戏 and 45. 跳跃游戏 II

题目描述给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例 1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例 2:输入:nums = [3,2,1,0,4]输出:false解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下

2021-08-21 11:50:16 94

原创 leetcode 48. 旋转图像

题目描述给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 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,6,7],[15,14,12,16]]输出:[[15,13,2

2021-08-20 20:34:27 63

原创 leetcode 31. 下一个排列 and LeetCode 670. 最大交换

题目描述实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。示例 1:输入:nums = [1,2,3]输出:[1,3,2]示例 2:输入:nums = [3,2,1]输出:[1,2,3]示例 3:输入:nums = [1,1,5]输出:[1,5,1]示例 4:输入:nums = [1]输出:[1]除了

2021-08-20 20:09:40 60

原创 leetcode 523. 连续的子数组和(前缀和+哈希)

题目描述给你一个整数数组 nums 和一个整数 k ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组:子数组大小 至少为 2 ,且子数组元素总和为 k 的倍数。如果存在,返回 true ;否则,返回 false 。如果存在一个整数 n ,令整数 x 符合 x = n * k ,则称 x 是 k 的一个倍数。0 始终视为 k 的一个倍数。示例 1:输入:nums = [23,2,4,6,7], k = 6输出:true解释:[2,4] 是一个大小为 2 的子数组,并且和为

2021-08-20 16:41:46 128

原创 leetcode 97. 交错字符串(DP)

题目描述给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串:s = s1 + s2 + … + snt = t1 + t2 + … + tm|n - m| <= 1交错 是 s1 + t1 + s2 + t2 + s3 + t3 + … 或者 t1 + s1 + t2 + s2 + t3 + s3 + …提示:a + b 意味着字符串 a 和 b 连接。

2021-08-20 16:00:55 110

原创 leetcode 673. 最长递增子序列的个数(DP)

题目描述给定一个未排序的整数数组,找到最长递增子序列的个数。示例 1:输入: [1,3,5,4,7]输出: 2解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]。示例 2:输入: [2,2,2,2,2]输出: 5解释: 最长递增子序列的长度是1,并且存在5个子序列的长度为1,因此输出5。注意: 给定的数组长度不超过 2000 并且结果一定是32位有符号整数。f[i] 表示以 i 结尾的子序列的长度,g[i] 表示以 i 结尾的最长上升子序列的个数

2021-08-20 11:28:29 87

原创 leetcode 148. 排序链表 (归并排序的迭代写法)

题目描述给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?示例 1:输入:head = [4,2,1,3]输出:[1,2,3,4]示例 2:输入:head = [-1,5,3,4,0]输出:[-1,0,3,4,5]示例 3:输入:head = []输出:[]归并排序的简要步骤:将数组划分为只有一个元素的子数组,然后依次向上合并,直到合并到数组长度等于原始数组长度。类似于下图

2021-08-19 16:31:27 140

原创 leetcode 445. 两数相加 II(翻转链表的使用)

题目描述给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例1:输入:l1 = [7,2,4,3], l2 = [5,6,4]输出:[7,8,0,7]示例2:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[8,0,7]示例3:输入:l1 = [0], l2 = [0]输出:[0]首先翻转两个链表,然后按照整数相加的规则从最低位开始遍

2021-08-19 11:44:24 101

原创 leetcode 98. 验证二叉搜索树(二叉树的中序遍历)

题目描述给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。使用pre节点保存遍历中的前一个节点,然后pre节点与当前节点p作比较,由于是中序遍历且需要判定是否是二叉搜素树,因此前一个节点pre比当前节点值要小,如果大的话这说明不是二叉搜索树,返回false即可。class Solution {public: bool isValidBS

2021-08-18 10:55:09 121

原创 leetcode 785. 判断二分图((染色法)

题目描述存在一个 无向图 ,图中有 n 个节点。其中每个节点都有一个介于 0 到 n - 1 之间的唯一编号。给你一个二维数组 graph ,其中 graph[u] 是一个节点数组,由节点 u 的邻接节点组成。形式上,对于 graph[u] 中的每个 v ,都存在一条位于节点 u 和节点 v 之间的无向边。该无向图同时具有以下属性:不存在自环(graph[u] 不包含 u)。不存在平行边(graph[u] 不包含重复值)。如果 v 在 graph[u] 内,那么 u 也应该在 graph[v]

2021-08-17 21:28:47 175

原创 leetcode 130. 被围绕的区域(Flood Fill)

题目描述给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例 1:输入:board = [[“X”,“X”,“X”,“X”],[“X”,“O”,“O”,“X”],[“X”,“X”,“O”,“X”],[“X”,“O”,“X”,“X”]]输出:[[“X”,“X”,“X”,“X”],[“X”,“X”,“X”,“X”],[“X”,“X”,“X”,“X”],[“X”,“O”,“X”,“X”]]解释

2021-08-17 20:54:39 80

原创 leetcode 513. 找树左下角的值(层序遍历) and 1302. 层数最深叶子节点的和

题目描述给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。示例 1:输入: root = [2,1,3]输出: 1示例 2:输入: [1,2,3,4,null,5,6,null,null,7]输出: 7层序遍历,找到最后一层第一个节点即可。class Solution {public: int findBottomLeftValue(TreeNode* root) { queue<TreeNode*&

2021-08-17 20:05:51 72

原创 leetcode 116. 填充每个节点的下一个右侧节点指针

题目描述给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。进阶:你只能使用常量级额外空间。使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间

2021-08-17 16:22:47 56

原创 leetcode 863. 二叉树中所有距离为 K 的结点

题目描述给定一个二叉树(具有根结点 root), 一个目标结点 target ,和一个整数值 K 。返回到目标结点 target 距离为 K 的所有结点的值的列表。 答案可以以任何顺序返回。示例 1:输入:root = [3,5,1,6,2,0,8,null,null,7,4], target = 5, K = 2输出:[7,4,1]解释:所求结点为与目标结点(值为 5)距离为 2 的结点,值分别为 7,4,以及 1注意,输入的 “root” 和 “target” 实际上是树上的结点。上

2021-08-17 15:46:48 218 2

原创 leetcode19. 删除链表的倒数第 N 个结点(快慢指针)

题目描述给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]在本题目中有可能出现删除头结点的情况,因此需要设置虚拟头结点,设置快慢指针,快指针先走 n 步,然后慢指针再向后移动,由于慢指针是从虚拟头结点,因此快指针结束的时候慢

2021-08-16 15:34:59 53

原创 leetcode 199. 二叉树的右视图(BFS)

题目描述给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例 1:输入: [1,2,3,null,5,null,4]输出: [1,3,4]示例 2:输入: [1,null,3]输出: [1,3]示例 3:输入: []输出: []右视图,相当于层序遍历的每一层的最后一个节点,因此采用宽搜,到每一层的最后一个节点时就将结果保存下来。class Solution {public: vector<int> r

2021-08-16 10:32:02 229

原创 LeetCode 24. 两两交换链表中的节点(递归)

题目描述给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]该题目是k个为一组翻转链表的特殊情况,k==2,首先基本的想法是找到新的头节点,将新的头结点指向原始的头结点,之后递归进行,递归的时候初始头节点时此时新头的下一个节点。class Solutio

2021-08-16 09:57:31 64

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除