leetcode重点250题
文章平均质量分 50
cqu_shuai
实事求是,不自以为是
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode之相交链表(C++)
参考链接https://leetcode-cn.com/problems/intersection-of-two-linked-lists题目描述给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。图示两个链表在节点 c1 开始相交:解题思路最简单的思路是,先遍历一个链表,记录下经过的节点,然后遍历另一个链表,如果节点出现过,则为相交点。但这样会额外消耗空间来存储之前出现过的节点。另一种思路就是双指针原创 2021-06-05 23:10:17 · 260 阅读 · 1 评论 -
leetcode之移除链表元素(C++)
参考链接https://leetcode-cn.com/problems/remove-linked-list-elements/https://leetcode-cn.com/problems/remove-linked-list-elements/solution/yi-chu-lian-biao-yuan-su-by-leetcode-sol-654m/题目描述给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的原创 2021-06-05 09:45:34 · 168 阅读 · 0 评论 -
leetcode之连续数组(C++)
参考链接https://leetcode-cn.com/problems/contiguous-array/https://leetcode-cn.com/problems/contiguous-array/solution/lian-xu-shu-zu-by-leetcode-solution-mvnm/题目描述给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。解题思路依然可以转化为前缀和的思路。比如,分别记录索引i以前0和1的个数原创 2021-06-03 21:35:28 · 457 阅读 · 0 评论 -
leetcode之连续的子数组和(C++)
参考链接https://leetcode-cn.com/problems/continuous-subarray-sum/https://leetcode-cn.com/problems/continuous-subarray-sum/solution/lian-xu-de-zi-shu-zu-he-by-leetcode-solu-rdzi/题目描述给你一个整数数组 nums 和一个整数 k ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组:子数组大小 至少为 2 ,且子数组原创 2021-06-03 21:02:06 · 641 阅读 · 0 评论 -
leetcode之4的幂(C++)
参考链接https://leetcode-cn.com/problems/power-of-four/https://leetcode-cn.com/problems/power-of-four/solution/4de-mi-by-leetcode-solution-b3ya/题目描述给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x解题思路4的幂和2的幂一样,二原创 2021-05-31 22:18:47 · 228 阅读 · 0 评论 -
leetcode之2的幂(C++)
参考链接https://leetcode-cn.com/problems/power-of-two/https://leetcode-cn.com/problems/power-of-two/solution/2de-mi-by-leetcode-solution-rny3/题目描述给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。解题思路首先负数是肯定不行原创 2021-05-30 10:10:28 · 439 阅读 · 0 评论 -
leetcode之粉刷房子3(C++)
参考链接https://leetcode-cn.com/problems/paint-house-iii/题目描述在一个小城市里,有 m 个房子排成一排,你需要给每个房子涂上 n 种颜色之一(颜色编号为 1 到 n )。有的房子去年夏天已经涂过颜色了,所以这些房子不可以被重新涂色。我们将连续相同颜色尽可能多的房子称为一个街区。(比方说 houses = [1,2,2,3,3,2,1,1] ,它包含 5 个街区 [{1}, {2,2}, {3,3}, {2}, {1,1}] 。)给你一个数组 h原创 2021-05-29 16:37:18 · 441 阅读 · 0 评论 -
leetcode之前K个高频单词(C++)
参考链接https://leetcode-cn.com/problems/top-k-frequent-words/https://leetcode-cn.com/problems/top-k-frequent-words/solution/qian-kge-gao-pin-dan-ci-by-leetcode-solu-3qk0/题目描述给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。解题思路原创 2021-05-29 16:16:42 · 468 阅读 · 0 评论 -
leetcode之奇怪的打印机(C++)
参考链接https://leetcode-cn.com/problems/strange-printer/题目描述有台奇怪的打印机有以下两个特殊要求:打印机每次只能打印由同一个字符组成的序列。每次可以在任意起始和结束位置打印新字符,并且会覆盖掉原来已有的字符。给你一个字符串 s ,你的任务是计算这个打印机打印它需要的最少打印次数。解题思路典型的“最”型动态规划问题,状态是打印一个区间内的字符串的最小次数,选择是区间的起始位置i,j。如果s[i]和s[j]相等,那么打印s[i]时直接就可原创 2021-05-29 15:19:54 · 425 阅读 · 0 评论 -
leetcode之反转每对括号间的子串(C++)
参考链接https://leetcode-cn.com/problems/reverse-substrings-between-each-pair-of-parentheses/https://leetcode-cn.com/problems/reverse-substrings-between-each-pair-of-parentheses/solution/fan-zhuan-mei-dui-gua-hao-jian-de-zi-chu-gwpv/题目描述给出一个字符串 s(仅含有小写英文原创 2021-05-29 14:17:47 · 661 阅读 · 0 评论 -
leetcode之形成两个异或相等数组的三元组数目(C++)
参考链接https://leetcode-cn.com/problems/count-triplets-that-can-form-two-arrays-of-equal-xor/https://leetcode-cn.com/problems/count-triplets-that-can-form-two-arrays-of-equal-xor/solution/xing-cheng-liang-ge-yi-huo-xiang-deng-sh-jud0/题目描述给你一个整数数组 arr 。原创 2021-05-19 09:46:45 · 237 阅读 · 0 评论 -
leetcode之找出第K大的异或坐标值(C++)
参考链接https://leetcode-cn.com/problems/find-kth-largest-xor-coordinate-value/https://leetcode-cn.com/problems/find-kth-largest-xor-coordinate-value/solution/zhao-chu-di-k-da-de-yi-huo-zuo-biao-zhi-mgick/题目描述给你一个二维矩阵 matrix 和一个整数 k ,矩阵大小为 m x n 由非负整数组成。原创 2021-05-19 08:48:39 · 177 阅读 · 0 评论 -
leetcode之二叉树的堂兄弟节点(C++)
参考链接https://leetcode-cn.com/problems/cousins-in-binary-tree/题目描述在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false。解题思路与深度相关原创 2021-05-17 15:14:01 · 339 阅读 · 0 评论 -
leetcode之数组中两个数的最大异或值(C++)
参考链接https://leetcode-cn.com/problems/maximum-xor-of-two-numbers-in-an-array/https://leetcode-cn.com/problems/maximum-xor-of-two-numbers-in-an-array/solution/shu-zu-zhong-liang-ge-shu-de-zui-da-yi-h-n9m9/题目描述给你一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算原创 2021-05-16 14:04:40 · 796 阅读 · 0 评论 -
leetcode之罗马数字转整数(C++)
参考链接https://leetcode-cn.com/problems/roman-to-integer题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5原创 2021-05-16 09:53:05 · 289 阅读 · 0 评论 -
leetcode之制作m束花所需的最少天数(C++)
参考链接https://leetcode-cn.com/problems/minimum-number-of-days-to-make-m-bouquets/https://leetcode-cn.com/problems/minimum-number-of-days-to-make-m-bouquets/solution/zhi-zuo-m-shu-hua-suo-xu-de-zui-shao-tia-mxci/题目描述给你一个整数数组 bloomDay,以及两个整数 m 和 k 。现需要制原创 2021-05-16 09:42:29 · 254 阅读 · 0 评论 -
leetcode之解码异或后的排列(C++)
参考链接https://leetcode-cn.com/problems/decode-xored-permutation/题目描述给你一个整数数组 perm ,它是前 n 个正整数的排列,且 n 是个奇数。它被加密成另一个长度为 n - 1 的整数数组 encoded ,满足 encoded[i] = perm[i] XOR perm[i + 1] 。比方说,如果 perm = [1,3,2] ,那么 encoded = [2,1] 。给你 encoded 数组,请你返回原始数组 perm原创 2021-05-12 21:07:30 · 554 阅读 · 0 评论 -
leetcode之子数组异或查询(C++)
参考链接https://leetcode-cn.com/problems/xor-queries-of-a-subarray/题目描述有一个正整数数组 arr,现给你一个对应的查询数组 queries,其中 queries[i] = [Li, Ri]。对于每个查询 i,请你计算从 Li 到 Ri 的 XOR 值(即 arr[Li] xor arr[Li+1] xor … xor arr[Ri])作为本次查询的结果。并返回一个包含给定查询 queries 所有结果的数组。解题思路异或的一个原创 2021-05-12 20:10:16 · 240 阅读 · 0 评论 -
leetcode之叶子相似的树(C++)
参考链接https://leetcode-cn.com/problems/leaf-similar-trees/题目描述请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个叶值序列。举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回true;否则返回 false 。解题思路前序遍历,用数组记原创 2021-05-10 19:34:59 · 200 阅读 · 0 评论 -
leetcode之删除并获得点数(C++)
参考链接https://leetcode-cn.com/problems/delete-and-earn/https://leetcode-cn.com/problems/delete-and-earn/solution/shan-chu-bing-huo-de-dian-shu-by-leetcod-x1pu/题目描述给你一个整数数组 nums ,你可以对它进行一些操作。每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除每个等于 nums[i]原创 2021-05-06 23:25:03 · 260 阅读 · 1 评论 -
leetcode之二叉搜索树迭代器(C++)
参考链接https://leetcode-cn.com/problems/binary-search-tree-iterator/https://leetcode-cn.com/problems/binary-search-tree-iterator/solution/er-cha-sou-suo-shu-die-dai-qi-by-leetcod-4y0y/题目描述实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器:BSTIterator(Tr原创 2021-05-10 10:36:06 · 190 阅读 · 0 评论 -
leetcode之比赛中的配对次数(C++)
参考链接https://leetcode-cn.com/problems/count-of-matches-in-tournament题目描述给你一个整数 n ,表示比赛中的队伍数。比赛遵循一种独特的赛制:如果当前队伍数是 偶数 ,那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛,且产生 n / 2 支队伍进入下一轮。如果当前队伍数为 奇数 ,那么将会随机轮空并晋级一支队伍,其余的队伍配对。总共进行 (n - 1) / 2 场比赛,且产生 (n - 1) / 2 + 1 支队伍进原创 2021-05-03 15:40:25 · 224 阅读 · 0 评论 -
leetcode之在既定时间做作业的学生人数(C++)
参考链接https://leetcode-cn.com/problems/number-of-students-doing-homework-at-a-given-time/题目描述给你两个整数数组startTime(开始时间)和endTime(结束时间),并指定一个整数queryTime作为查询时间。已知,第i名学生在startTime[i]时开始写作业并于endTime[i]时完成作业。请返回在查询时间queryTime时正在做作业的学生人数。形式上,返回能够使queryTime处于区间[原创 2021-05-03 15:29:43 · 210 阅读 · 0 评论 -
leetcode之所有奇数长度子数组的和(C++)
参考链接https://leetcode-cn.com/problems/sum-of-all-odd-length-subarrays/https://leetcode-cn.com/problems/sum-of-all-odd-length-subarrays/solution/cong-on3-dao-on-de-jie-fa-by-liuyubobobo/题目描述给你一个正整数数组 arr,请你计算所有可能的奇数长度子数组的和。子数组定义为原数组中的一个连续子序列。请你返回 arr原创 2021-05-03 15:21:55 · 405 阅读 · 0 评论 -
leetcode之矩阵对角线元素的和(C++)
参考链接https://leetcode-cn.com/problems/matrix-diagonal-sum/题目描述给你一个正方形矩阵mat,请你返回矩阵对角线元素的和。请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。解题思路由于矩阵的主对角线和副对角线的索引有规律,所以只需要一次遍历即可,遍历时先将两条对角线的值都求和,最后判断矩阵宽度是否为奇数,如果是,则再减掉一个中心处的值。代码class Solution {public: int diago原创 2021-05-03 11:36:06 · 896 阅读 · 0 评论 -
leetcode之特定深度节点链表(C++)
参考链接https://leetcode-cn.com/problems/list-of-depth-lcci/题目描述给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。解题思路可以先前序遍历整棵树,记录每个深度对应的值构成的数组。然后分别针对不同深度的数组构建链表。代码class Solution {public: unordered_map<int, vector&l原创 2021-05-03 11:19:27 · 152 阅读 · 0 评论 -
leetcode之两点之间不包含任何点的最宽垂直面积(C++)
参考链接https://leetcode-cn.com/problems/widest-vertical-area-between-two-points-containing-no-points/题目描述给你 n 个二维平面上的点 points ,其中 points[i] = [xi, yi] ,请你返回两点之间内部不包含任何点的最宽垂直面积的宽度。垂直面积的定义是固定宽度,而 y 轴上无限延伸的一块区域(也就是高度为无穷大)。最宽垂直面积为宽度最大的一个垂直面积。请注意,垂直区域边上的点不在原创 2021-05-03 10:51:53 · 194 阅读 · 0 评论 -
leetcode之整数反转(C++)
参考链接https://leetcode-cn.com/problems/reverse-integer/https://leetcode-cn.com/problems/reverse-integer/solution/zheng-shu-fan-zhuan-by-leetcode-solution-bccn/题目描述给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设原创 2021-05-03 10:16:19 · 214 阅读 · 0 评论 -
leetcode之查询带键的排列(C++)
参考链接https://leetcode-cn.com/problems/queries-on-a-permutation-with-key/题目描述给你一个待查数组 queries ,数组中的元素为 1 到 m 之间的正整数。 请你根据以下规则处理所有待查项 queries[i](从 i=0 到 i=queries.length-1):一开始,排列 P=[1,2,3,…,m]。对于当前的 i ,请你找出待查项 queries[i] 在排列 P 中的位置(下标从 0 开始),然后将其从原位置移原创 2021-05-03 00:46:15 · 160 阅读 · 0 评论 -
leetcode之用户分组(C++)
参考链接https://leetcode-cn.com/problems/group-the-people-given-the-group-size-they-belong-to/题目描述有 n 位用户参加活动,他们的 ID 从 0 到 n - 1,每位用户都 恰好 属于某一用户组。给你一个长度为 n 的数组 groupSizes,其中包含每位用户所处的用户组的大小,请你返回用户分组情况(存在的用户组以及每个组中用户的 ID)。你可以任何顺序返回解决方案,ID 的顺序也不受限制。此外,题目给出的原创 2021-05-03 00:10:56 · 198 阅读 · 0 评论 -
leetcode之找出星型图的中心节点(C++)
参考链接https://leetcode-cn.com/problems/find-center-of-star-graph/题目描述有一个无向的 星型 图,由 n 个编号从 1 到 n 的节点组成。星型图有一个中心节点,并且恰有 n - 1 条边将中心节点与其他每个节点连接起来。给你一个二维整数数组 edges ,其中 edges[i] = [ui, vi] 表示在节点 ui 和 vi 之间存在一条边。请你找出并返回 edges 所表示星型图的中心节点。解题思路可以统计一下节点出现的次数原创 2021-05-03 00:09:27 · 403 阅读 · 0 评论 -
leetcode之翻转矩阵后的得分(C++)
参考链接https://leetcode-cn.com/problems/score-after-flipping-matrix/题目描述有一个二维矩阵 A 其中每个元素的值为 0 或 1 。移动是指选择任一行或列,并转换该行或列中的每一个值:将所有 0 都更改为 1,将所有 1 都更改为 0。在做出任意次数的移动后,将该矩阵的每一行都按照二进制数来解释,矩阵的得分就是这些数字的总和。返回尽可能高的分数。解题思路贪心策略,要数字最大,最高位要为1,所以先通过移动哪些最高位不是1的行,使原创 2021-05-02 14:30:27 · 216 阅读 · 0 评论 -
leetcode之二进制链表转整数(C++)
参考链接https://leetcode-cn.com/problems/convert-binary-number-in-a-linked-list-to-integer/题目描述给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的十进制值。解题思路模拟整个过程即可,每次遇到新的节点,将原来的值左移一位,再加上当前节点的值。代码class Solution {public: int原创 2021-05-02 14:03:00 · 168 阅读 · 0 评论 -
leetcode之祖父节点值为偶数的节点和(C++)
参考链接https://leetcode-cn.com/problems/sum-of-nodes-with-even-valued-grandparent/题目描述给你一棵二叉树,请你返回满足以下条件的所有节点的值之和:该节点的祖父节点的值为偶数。(一个节点的祖父节点是指该节点的父节点的父节点。)如果不存在祖父节点值为偶数的节点,那么返回0。解题思路直接遍历整棵树,每次遇到节点值为偶数的节点,对其再单独往下遍历两层,将两层里的节点值求和。代码class Solution {pub原创 2021-05-02 13:53:39 · 211 阅读 · 0 评论 -
leetcode之统计位数为偶数的数字(C++)
参考链接https://leetcode-cn.com/problems/find-numbers-with-even-number-of-digits/题目描述给你一个整数数组nums,请你返回其中位数为偶数的数字的个数。解题思路分两步,先求出数的位数,再判断位数是否为偶数。第一步可以用除10的方式统计出来,也可以转化为字符串,直接看字符串的长度;第二步可以对2取余进行判断,也可以用位运算,与1相与。代码朴素解法class Solution {public: int fin原创 2021-05-02 12:23:39 · 802 阅读 · 0 评论 -
leetcode之无重复字符串的排列组合(C++)
参考链接https://leetcode-cn.com/problems/permutation-i-lcci/题目描述无重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同。解题思路典型的全排列问题,用回溯法。但注意要求无重复字符,所以在填当前位置的字符时,需要判断前面是否出现过该字符。可以使用简单的遍历,也可以用哈希集合存储已经填过的字符。代码回溯法class Solution {public: vector<string>原创 2021-05-02 12:08:13 · 742 阅读 · 0 评论 -
leetcode之最大二叉树(C++)
参考链接https://leetcode-cn.com/problems/maximum-binary-tree/题目描述给定一个不含重复元素的整数数组 nums 。一个以此数组直接递归构建的最大二叉树定义如下:二叉树的根是数组 nums 中的最大元素。左子树是通过数组中最大值左边部分递归构造出的最大二叉树。右子树是通过数组中最大值右边部分递归构造出的最大二叉树。返回有给定数组 nums 构建的最大二叉树。解题思路题目已经显式地说明了,应该用递归的方式构建最大二叉树。先确定最大值的原创 2021-05-02 10:21:16 · 457 阅读 · 0 评论 -
leetcode之将所有数字用字符替换(C++)
参考链接https://leetcode-cn.com/problems/replace-all-digits-with-characters/题目描述给你一个下标从 0 开始的字符串 s ,它的偶数下标处为小写英文字母,奇数下标处为数字。定义一个函数 shift(c, x) ,其中 c 是一个字符且 x 是一个数字,函数返回字母表中 c 后面第 x 个字符。比方说,shift(‘a’, 5) = ‘f’ 和 shift(‘x’, 0) = ‘x’ 。对于每个奇数下标 i ,你需要将数字 s原创 2021-05-02 09:49:50 · 540 阅读 · 0 评论 -
leetcode之括号(C++)
参考链接https://leetcode-cn.com/problems/bracket-lcci/题目描述括号。设计一种算法,打印n对括号的所有合法的(例如,开闭一一对应)组合。说明:解集不能包含重复的子集。例如,给出 n = 3,生成结果为:解题思路就是穷举问题,用回溯法解决即可。需要注意的是如何判断括号的合法性,首先左括号数大于右括号数;其次,左括号最多有n个。代码class Solution {public: vector<string> answer;原创 2021-05-02 09:37:58 · 195 阅读 · 0 评论 -
leetcode之砖墙(C++)
参考链接https://leetcode-cn.com/problems/brick-wall题目描述你的面前有一堵矩形的、由 n 行砖块组成的砖墙。这些砖块高度相同(也就是一个单位高)但是宽度不同。每一行砖块的宽度之和应该相等。你现在要画一条自顶向下的、穿过最少砖块的垂线。如果你画的线只是从砖块的边缘经过,就不算穿过这块砖。你不能沿着墙的两个垂直边缘之一画线,这样显然是没有穿过一块砖的。给你一个二维数组 wall ,该数组包含这堵墙的相关信息。其中,wall[i] 是一个代表从左至右每块砖的原创 2021-05-02 07:35:49 · 504 阅读 · 0 评论
分享