![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode数据结构
孑影安然
这个作者很懒,什么都没留下…
展开
-
Leetcode数据结构刷题——415. 字符串相加(C++)
你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。输入:num1 = “11”, num2 = “123”输入:num1 = “456”, num2 = “77”输入:num1 = “0”, num2 = “0”原创 2023-03-08 21:22:55 · 61 阅读 · 0 评论 -
Leetcode数据结构刷题——238. 除自身以外数组的乘积(C++)
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请不要使用除法,且在 O(n) 时间复杂度内完成此题。输入: nums = [-1,1,0,-3,3]输入: nums = [1,2,3,4]输出: [24,12,8,6]输出: [0,0,9,0,0]原创 2023-03-08 17:42:52 · 87 阅读 · 0 评论 -
Leetcode数据结构刷题——334. 递增的三元子序列(C++)
如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true;解释:三元组 (3, 4, 5) 满足题意,因为 nums[3] == 0 < nums[4] == 4 < nums[5] == 6。解释:任何 i < j < k 的三元组都满足题意。输入:nums = [2,1,5,0,4,6]输入:nums = [1,2,3,4,5]输入:nums = [5,4,3,2,1]解释:不存在满足题意的三元组。原创 2023-03-07 20:48:16 · 107 阅读 · 0 评论 -
Leetcode数据结构刷题——435. 无重叠区间(C++)
给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi]。输入: intervals = [[1,2],[2,3],[3,4],[1,3]]输入: intervals = [ [1,2], [1,2], [1,2] ]输入: intervals = [ [1,2], [2,3] ]解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。解释: 你不需要移除任何区间,因为它们已经是无重叠的了。解释: 移除 [1,3] 后,剩下的区间没有重叠。原创 2023-03-07 20:18:15 · 209 阅读 · 0 评论 -
Leetcode数据结构刷题——240. 搜索二维矩阵 II(C++)
输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20。输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5。编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。原创 2023-03-07 20:01:12 · 103 阅读 · 0 评论 -
Leetcode数据结构刷题——59. 螺旋矩阵 II(C++)
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix。输出:[[1,2,3],[8,9,4],[7,6,5]]原创 2023-03-07 17:52:29 · 75 阅读 · 0 评论 -
Leetcode数据结构刷题——2. 两数相加(C++)
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]请你将两个数相加,并以相同形式返回一个表示和的链表。输入:l1 = [0], l2 = [0]输出:[8,9,9,9,0,0,0,1]解释:342 + 465 = 807.输出:[7,0,8]原创 2023-03-07 17:24:30 · 56 阅读 · 0 评论 -
Leetcode数据结构刷题——706. 设计哈希映射(C++)
/ 返回 -1(未找到),myHashMap 现在为 [[1,1], [2,2]]// myHashMap 现在为 [[1,1], [2,1]](更新已有的值)// 返回 1 ,myHashMap 现在为 [[1,1], [2,2]]// 返回 1 ,myHashMap 现在为 [[1,1], [2,1]]// 返回 -1(未找到),myHashMap 现在为 [[1,1]]// myHashMap 现在为 [[1,1], [2,2]]// myHashMap 现在为 [[1,1]]原创 2023-03-07 15:51:44 · 126 阅读 · 0 评论 -
Leetcode数据结构刷题——48. 旋转图像(C++)
输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]原创 2023-03-06 21:31:09 · 97 阅读 · 0 评论 -
Leetcode数据结构刷题——119. 杨辉三角 II(C++)
给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。输入: rowIndex = 3。输入: rowIndex = 0。输入: rowIndex = 1。输出: [1,3,3,1]原创 2023-03-06 20:26:29 · 131 阅读 · 0 评论 -
Leetcode数据结构刷题——56. 合并区间(C++)
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]。输入:intervals = [[1,3],[2,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。输入:intervals = [[1,4],[4,5]]输出:[[1,6],[8,10],[15,18]]输出:[[1,5]]原创 2023-03-06 17:31:37 · 214 阅读 · 0 评论 -
Leetcode数据结构刷题——75. 颜色分类(C++)
给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库内置的 sort 函数的情况下解决这个问题。输入:nums = [2,0,2,1,1,0]输入:nums = [2,0,1]输出:[0,0,1,1,2,2]输出:[0,1,2]原创 2023-03-06 16:30:47 · 123 阅读 · 0 评论 -
Leetcode数据结构刷题——15. 三数之和(C++)
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]输入:nums = [0,1,1]输入:nums = [0,0,0]解释:唯一可能的三元组和为 0。输出:[[0,0,0]]原创 2023-03-06 15:27:20 · 193 阅读 · 0 评论 -
Leetcode数据结构刷题——169. 多数元素(C++)
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。输入:nums = [2,2,1,1,1,2,2]输入:nums = [3,2,3]原创 2023-03-05 20:11:09 · 44 阅读 · 0 评论 -
Leetcode数据结构刷题——136. 只出现一次的数字(C++)
注:在看官方题解以前想到的解法是先对整个数组排序,然后统计每个数字出现的次数。题目要求在不需要额外空间的情况下,其实就应该往位运算上考虑。给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。输入:nums = [4,1,2,1,2]输入:nums = [2,2,1]输入:nums = [1]原创 2023-03-05 19:57:28 · 170 阅读 · 0 评论 -
Leetcode数据结构刷题——235. 二叉搜索树的最近公共祖先(C++)
输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8。输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4。例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]解释: 节点 2 和节点 4 的最近公共祖先是 2, 因为根据定义最近公共祖先节点可以为节点本身。解释: 节点 2 和节点 8 的最近公共祖先是 6。原创 2023-03-04 20:57:14 · 87 阅读 · 0 评论 -
Leetcode数据结构刷题——653. 两数之和 IV - 输入二叉搜索树(C++)
给定一个二叉搜索树 root 和一个目标结果 k,如果二叉搜索树中存在两个元素且它们的和等于给定的目标结果,则返回 true。输入: root = [5,3,6,2,4,null,7], k = 28。输入: root = [5,3,6,2,4,null,7], k = 9。原创 2023-03-04 20:33:00 · 67 阅读 · 0 评论 -
Leetcode数据结构刷题——98. 验证二叉搜索树(C++)
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。输入:root = [5,1,4,null,null,3,6]解释:根节点的值是 5 ,但是右子节点的值是 4。所有左子树和右子树自身必须也是二叉搜索树。节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。输入:root = [2,1,3]原创 2023-03-04 17:52:09 · 76 阅读 · 0 评论 -
Leetcode数据结构刷题——701. 二叉搜索树中的插入操作(C++)
给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。输入:root = [4,2,7,1,3,null,null,null,null,null,null], val = 5。输入:root = [40,20,60,10,30,50,70], val = 25。输出:[40,20,60,10,30,50,70,null,null,25]输入:root = [4,2,7,1,3], val = 5。输出:[4,2,7,1,3,5]输出:[4,2,7,1,3,5]原创 2023-03-04 17:31:32 · 46 阅读 · 0 评论 -
Leetcode数据结构刷题——700. 二叉搜索树中的搜索(C++)
你需要在 BST 中找到节点值等于 val 的节点。返回以该节点为根的子树。如果节点不存在,则返回 null。给定二叉搜索树(BST)的根节点 root 和一个整数值 val。输入:root = [4,2,7,1,3], val = 2。输入:root = [4,2,7,1,3], val = 5。输出:[2,1,3]原创 2023-03-04 17:11:43 · 47 阅读 · 0 评论 -
Leetcode数据结构刷题——226. 翻转二叉树(C++)
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]输入:root = [2,1,3]输入:root = []输出:[2,3,1]原创 2023-03-04 16:54:53 · 36 阅读 · 0 评论 -
Leetcode数据结构刷题——112. 路径总和(C++)
判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22。输入:root = [1,2,3], targetSum = 5。解释:由于树是空的,所以不存在根节点到叶子节点的路径。不存在 sum = 5 的根节点到叶子节点的路径。解释:等于目标和的根节点到叶节点路径如上图所示。叶子节点 是指没有子节点的节点。原创 2023-03-04 17:03:52 · 68 阅读 · 0 评论 -
Leetcode数据结构刷题——101. 对称二叉树(C++)
输入:root = [1,2,2,null,3,null,3]给你一个二叉树的根节点 root , 检查它是否轴对称。输入:root = [1,2,2,3,4,4,3]原创 2023-03-03 17:46:58 · 79 阅读 · 0 评论 -
Leetcode数据结构刷题——104. 二叉树的最大深度(C++)
给定二叉树 [3,9,20,null,null,15,7],二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。给定一个二叉树,找出其最大深度。返回它的最大深度 3。原创 2023-03-03 17:40:22 · 73 阅读 · 0 评论 -
Leetcode数据结构刷题——145. 二叉树的后序遍历(C++)
给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。输入:root = [3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]输入:root = [1]输入:root = []原创 2023-03-03 17:35:15 · 33 阅读 · 0 评论 -
Leetcode数据结构刷题——145. 二叉树的后序遍历(C++)
给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历。输入:root = [1,null,2,3]输入:root = [1]输入:root = []输出:[3,2,1]原创 2023-03-03 16:33:52 · 44 阅读 · 0 评论 -
Leetcode数据结构刷题——94. 二叉树的中序遍历(C++)
给定一个二叉树的根节点 root ,返回 它的 中序 遍历。输入:root = [1,null,2,3]输入:root = [1]输入:root = []输出:[1,3,2]原创 2023-03-03 16:31:23 · 55 阅读 · 0 评论 -
Leetcode数据结构刷题——144. 二叉树的前序遍历(C++)
给你二叉树的根节点 root ,返回它节点值的 前序 遍历。输入:root = [1,null,2,3]输入:root = [1,null,2]输入:root = [1,2]输入:root = [1]输入:root = []输出:[1,2,3]原创 2023-03-03 16:24:03 · 104 阅读 · 0 评论 -
Leetcode数据结构刷题——232. 用栈实现队列(C++)
你 只能 使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。请你仅使用两个栈实现先入先出队列。否则,返回 false。void push(int x) 将元素 x 推到队列的末尾。int pop() 从队列的开头移除并返回元素。int peek() 返回队列开头的元素。原创 2023-03-02 20:57:02 · 52 阅读 · 0 评论 -
Leetcode数据结构刷题——20. 有效的括号(C++)
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。每个右括号都有一个对应的相同类型的左括号。左括号必须用相同类型的右括号闭合。输入:s = “()[]{}”左括号必须以正确的顺序闭合。输入:s = “()”输入:s = “(]”原创 2023-03-02 20:41:59 · 63 阅读 · 0 评论 -
Leetcode数据结构刷题——83. 删除排序链表中的重复元素(C++)
给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次。返回 已排序的链表。输入:head = [1,1,2,3,3]输入:head = [1,1,2]输出:[1,2,3]原创 2023-03-02 20:07:00 · 75 阅读 · 0 评论 -
Leetcode数据结构刷题——206. 反转链表(C++)
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]输入:head = [1,2]输出:[5,4,3,2,1]输入:head = []原创 2023-03-02 19:56:42 · 42 阅读 · 0 评论 -
Leetcode数据结构刷题——203. 移除链表元素(C++)
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点。输入:head = [1,2,6,3,4,5,6], val = 6。输入:head = [7,7,7,7], val = 7。输入:head = [], val = 1。输出:[1,2,3,4,5]原创 2023-03-01 17:37:46 · 41 阅读 · 0 评论 -
Leetcode数据结构刷题——217. 存在重复元素(C++)
给你一个整数数组 nums。如果任一值在数组中出现 至少两次 ,返回 true;如果数组中每个元素互不相同,返回 false。输入:nums = [1,1,1,3,3,4,3,2,4,2]输入:nums = [1,2,3,1]输入:nums = [1,2,3,4]原创 2023-02-27 16:11:54 · 72 阅读 · 0 评论 -
Leetcode数据结构刷题——88. 合并两个有序数组(C++)
输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3。合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。输入:nums1 = [0], m = 0, nums2 = [1], n = 1。输入:nums1 = [1], m = 1, nums2 = [], n = 0。解释:需要合并 [1,2,3] 和 [2,5,6]。解释:需要合并的数组是 [] 和 [1]。输出:[1,2,2,3,5,6]原创 2023-02-27 16:19:12 · 38 阅读 · 0 评论 -
Leetcode数据结构刷题——350. 两个数组的交集 II(C++)
给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输入:nums1 = [1,2,2,1], nums2 = [2,2]原创 2023-02-27 16:24:39 · 88 阅读 · 0 评论 -
Leetcode数据结构刷题——566. 重塑矩阵(C++)
在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。否则,输出原始矩阵。输入:mat = [[1,2],[3,4]], r = 1, c = 4。输入:mat = [[1,2],[3,4]], r = 2, c = 4。输出:[[1,2],[3,4]]输出:[[1,2,3,4]]原创 2023-02-27 20:49:32 · 120 阅读 · 0 评论 -
Leetcode数据结构刷题——141. 环形链表(C++)
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。输入:head = [3,2,0,-4], pos = 1。给你一个链表的头节点 head ,判断链表中是否有环。输入:head = [1,2], pos = 0。解释:链表中有一个环,其尾部连接到第二个节点。解释:链表中有一个环,其尾部连接到第一个节点。输入:head = [1], pos = -1。解释:链表中没有环。原创 2023-02-28 20:32:46 · 102 阅读 · 0 评论 -
Leetcode数据结构刷题——118. 杨辉三角(C++)
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。输入: numRows = 5。输入: numRows = 1。原创 2023-02-27 21:02:01 · 109 阅读 · 0 评论 -
Leetcode数据结构刷题——242. 有效的字母异位词(C++)
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。输入: s = “anagram”, t = “nagaram”输入: s = “rat”, t = “car”原创 2023-02-28 20:13:44 · 58 阅读 · 0 评论