
LeetCode
文章平均质量分 56
银-TaMa
吾王美如画
展开
-
1743. 从相邻元素对还原数组
题目描述存在一个由 n 个不同元素组成的整数数组 nums ,但你已经记不清具体内容。好在你还记得 nums 中的每一对相邻元素。给你一个二维整数数组 adjacentPairs ,大小为 n - 1 ,其中每个 adjacentPairs[i] = [ui, vi]表示元素 ui 和 vi 在 nums 中相邻。题目数据保证所有由元素 nums[i] 和 nums[i+1] 组成的相邻元素对都存在于 adjacentPairs 中,存在形式可能是[nums[i], nums[i+1]] ,也可原创 2021-07-25 22:54:07 · 228 阅读 · 0 评论 -
【每日一刷】leetcode-1319. 连通网络的操作次数
用以太网线缆将 n 台计算机连接成一个网络,计算机的编号从 0 到 n-1。线缆用 connections 表示,其中 connections[i] = [a, b] 连接了计算机 a 和 b。网络中的任何一台计算机都可以通过网络直接或者间接访问同一个网络中其他任意一台计算机。给你这个计算机网络的初始布线 connections,你可以拔开任意两台直连计算机之间的线缆,并用它连接一对未直连的计算机。请你计算并返回使所有计算机都连通所需的最少操作次数。如果不可能,则返回 -1 。来源:力扣(LeetC原创 2021-01-23 21:02:47 · 407 阅读 · 0 评论 -
【leetcode】316. 去除重复字母
题目给定一个仅包含小写字母的字符串,去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置)。示例 1:输入: “bcabc”输出: “abc”示例 2:输入: “cbacdcbc”输出: “acdb”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-duplic...原创 2019-07-28 14:01:37 · 4145 阅读 · 0 评论 -
【leetcode】286. 墙与门
你被给定一个 m × n 的二维网格,网格中有以下三种可能的初始化值:-1 表示墙或是障碍物0 表示一扇门INF 无限表示一个空的房间。然后,我们用 231 - 1 = 2147483647 代表 INF。你可以认为通往门的距离总是小于 2147483647 的。你要给每个空房间位上填上该房间到 最近 门的距离,如果无法到达门,则填 INF 即可。来源:力扣(LeetCode)链接:h...原创 2019-07-22 23:45:04 · 2962 阅读 · 0 评论 -
【leetcode】994. 腐烂的橘子
题目在给定的网格中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/rottin...原创 2019-07-22 22:33:18 · 200 阅读 · 0 评论 -
【leetcode】55. 跳跃游戏
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。思路一开始我是想要dfs 但是超时,然后想用dp来解决但是问题就是从左向右跳,右边的状态知道,左边不知道怎么办??所以从右边开始,向左边跳,逆推这个过程,然后判断0是否可以到达,然后问题又来了还是慢 -_-方法 4:贪心当我们把代码改成自底向上的模...原创 2019-07-31 16:31:32 · 206 阅读 · 0 评论 -
【leetcode】11. 盛最多水的容器
给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/container-with-most-wate...转载 2019-08-04 09:23:45 · 121 阅读 · 0 评论 -
【leetcode】94. 二叉树的中序遍历
参考Morris Traversal方法遍历二叉树 非递归,不用栈,O(1)空间一、中序遍历步骤:如果当前节点的左孩子为空,则输出当前节点并且将当前节点的右孩子作为当前节点。意味着如果当前节点只有右子树自然应该向右遍历了。如果当前节点的左孩子不为空,在当前节点的左子树中找到当前节点在中序遍历下的前驱节点。a) 如果前驱节点的右孩子为空,将前驱结点的右孩子设置为当前节点。当前节...转载 2019-08-03 22:53:24 · 122 阅读 · 0 评论 -
【leetcode】238. 除自身以外数组的乘积
给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组...原创 2019-08-03 16:08:41 · 126 阅读 · 0 评论 -
【leetcode】114. 二叉树展开为链表
给定一个二叉树,原地将它展开为链表。思路class Solution {public: void flatten(TreeNode* root) { while (root != nullptr) { if (root->left != nullptr) { auto most_right = root-&...原创 2019-07-25 20:27:21 · 134 阅读 · 0 评论 -
【leetcode】260. 只出现一次的数字 III
给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。示例 :输入: [1,2,1,3,2,5]输出: [3,5]注意:结果输出的顺序并不重要,对于上面的例子, [5, 3] 也是正确答案。你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?来源:力扣(LeetCode)链接:https://leetcode-...原创 2019-07-25 19:56:31 · 234 阅读 · 0 评论 -
【leetcode】456. 132模式
题目给定一个整数序列:a1, a2, …, an,一个132模式的子序列 ai, aj, ak 被定义为:当 i < j < k 时,ai < ak < aj。设计一个算法,当给定有 n 个数字的序列时,验证这个序列中是否含有132模式的子序列。注意:n 的值小于15000。来源:力扣(LeetCode)链接:https://leetcode-cn.com/prob...原创 2019-07-25 19:26:30 · 214 阅读 · 0 评论 -
【leetcode】162. 寻找峰值
.峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-peak-e...原创 2019-07-30 20:39:20 · 157 阅读 · 0 评论 -
【leetcode】382. 链表随机节点(水池抽样)
这个感觉很神奇的样子,推荐参考 水塘抽样(Reservoir Sampling)问题水塘抽样是一系列的随机算法,其目的在于从包含n个项目的集合S中选取k个样本,其中n为一很大或未知的数量,尤其适用于不能把所有n个项目都存放到主内存的情况。在高德纳的计算机程序设计艺术中,有如下问题:可否在一未知大小的集合中,随机取出一元素?。或者是Google面试题: I have a linked list...转载 2019-07-21 20:43:29 · 192 阅读 · 0 评论 -
【leetcode】1004. 最大连续1的个数 III
题目给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 。返回仅包含 1 的最长(连续)子数组的长度。思路滑动窗口肯定,类似 567. 字符串的排列 维护滑动窗口内部有效的元素个数,满足一定的规则代码class Solution {public: int longestOnes(vector<int>& A, int K...原创 2019-07-21 14:40:34 · 253 阅读 · 0 评论 -
【leetcode】1071. 字符串的最大公因子
对于字符串 S 和 T,只有在 S = T + … + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。返回字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。示例 1:输入:str1 = “ABCABC”, str2 = “ABC”输出:“ABC”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problem...原创 2019-07-27 23:47:38 · 244 阅读 · 0 评论 -
【leetcode】124. 二叉树中的最大路径和
题目给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。思路这个题目,一开始我是没有思路的,一脸懵逼。最初想着是搜索去解决,但是结果不一定经过根节点,然后我就没有思路了。那简化一下问题,如果是答案一定经过根节点,那递归求解就很简单了。不过深究一下递归求解过程中的函数的定义,该函数是可以求出以...原创 2019-08-05 18:24:11 · 214 阅读 · 0 评论 -
【leetcode】652. 寻找重复的子树
给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。两棵树重复是指它们具有相同的结构以及相同的结点值。思路首先是进行序列化,然后序列化的过程中,进行树的深度优先搜索,在树的搜索过程中,进行一个结果的统计。毕竟树的深度优先访问的时间负杂度是O(n)的。代码class Solution {public: vector<TreeNo...原创 2019-09-25 10:06:20 · 282 阅读 · 0 评论 -
【数据结构学习-线段树】洛谷 P3372 【模板】线段树 1
线段树概念线段树(segment Tree) 是一种基于分治思想的二叉树结构,用于区间上进行信息统计用的。数据结构定义线段树每个节点都代表一个区间。线段树具有唯一根节点,代表整个区间。线段树每个叶子节点代表一个长度为1的元区间。对于每个内部节点,它的左子节点是[l, mid], 右子节点是[mid + 1, r], mid = (l + r ) / 2 ,向下取整。数据结构操作...原创 2019-09-23 09:10:56 · 222 阅读 · 0 评论 -
【leetcode】841. 钥匙和房间
有 N 个房间,开始时你位于 0 号房间。每个房间有不同的号码:0,1,2,…,N-1,并且房间里可能有一些钥匙能使你进入下一个房间。在形式上,对于每个房间 i 都有一个钥匙列表 rooms[i],每个钥匙 rooms[i][j] 由 [0,1,…,N-1] 中的一个整数表示,其中 N = rooms.length。 钥匙 rooms[i][j] = v 可以打开编号为 v 的房间。最初,除 ...原创 2019-09-16 10:17:03 · 339 阅读 · 0 评论 -
【leetcode】285. 二叉搜索树中的顺序后继
给你一个二叉搜索树和其中的某一个结点,请你找出该结点在树中顺序后继的节点。结点 p 的后继是值比 p.val 大的结点中键值最小的结点。思路一开始我是按照寻找找某节点的后继去写的class Solution {public: TreeNode* inorderSuccessor(TreeNode* root, TreeNode* p) { if (p->ri...原创 2019-09-15 11:49:12 · 731 阅读 · 0 评论 -
【leetcode】395. 至少有K个重复字符的最长子串
题目找到给定字符串(由小写字符组成)中的最长子串 T , 要求 T 中的每一字符出现次数都不少于 k 。输出 T 的长度。示例 1:输入:s = “aaabb”, k = 3输出:3最长子串为 “aaa” ,其中 ‘a’ 重复了 3 次。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-substring-wit...原创 2019-09-09 13:01:03 · 310 阅读 · 0 评论 -
【leetcode】204. 计数质数
线性筛套一下模板代码class Solution {public: int countPrimes(int n) { if (n < 2) return 0; vector<int> arr(n , 0); for (int i = 2; i < n;i ++) { if (!arr[i]...原创 2019-09-08 23:09:43 · 179 阅读 · 0 评论 -
【leetcode】253. 会议室 II
给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],…] (si < ei),为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要多少间会议室,才能满足这些会议安排。示例 1:输入: [[0, 30],[5, 10],[15, 20]]输出: 2示例 2:输入: [[7,10],[2,4]]输出: 1来源:力扣(Leet...原创 2019-09-08 22:56:30 · 8263 阅读 · 3 评论 -
【leetcode】269. 火星词典
题目现有一种使用字母的全新语言,这门语言的字母顺序与英语顺序不同。假设,您并不知道其中字母之间的先后顺序。但是,会收到词典中获得一个 不为空的 单词列表。因为是从词典中获得的,所以该单词列表内的单词已经 按这门新语言的字母顺序进行了排序。您需要根据这个输入的列表,还原出此语言中已知的字母顺序。来源:力扣(LeetCode)链接:https://leetcode-cn.com/probl...原创 2019-09-01 13:01:09 · 3015 阅读 · 1 评论 -
【leetcode】29. 两数相除
题目描述给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/divide-two-integers著作权归领扣网络所有。商业转载请联系官方授权,非商业转载...原创 2019-08-31 22:31:15 · 192 阅读 · 0 评论 -
【leetcode】139. 单词拆分
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/word-break著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出...原创 2019-08-20 18:01:25 · 166 阅读 · 0 评论 -
【leetcode】647. 回文子串
给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。思路啊啊啊,注意一点就可以,一个串是子串,只有其中的子串都是回文串才算得上是回文串,所以说,如果一个串不是回文串,那么也没有必要继续向后找了,另一点需要注意的就是寻找回文串的时候,肯定要从中间向两边去找,通过定义left,right来解决对于回文串是...原创 2019-08-10 14:35:08 · 143 阅读 · 0 评论 -
【leetcode】315. 计算右侧小于当前元素的个数
给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。示例:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/count-of-smaller-numbers-after-self著作权归领扣网络所有。商业转载请...原创 2019-08-10 09:57:34 · 205 阅读 · 0 评论 -
【leetcode】1014. 最佳观光组合
题目给定正整数数组 A,A[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的距离为 j - i。一对景点(i < j)组成的观光组合的得分为(A[i] + A[j] + i - j):景点的评分之和减去它们两者之间的距离。返回一对观光景点能取得的最高分。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/best...原创 2019-07-21 11:17:41 · 259 阅读 · 0 评论 -
【leetcode】950. 按递增顺序显示卡牌
题目牌组中的每张卡牌都对应有一个唯一的整数。你可以按你想要的顺序对这套卡片进行排序。最初,这些卡牌在牌组里是正面朝下的(即,未显示状态)。现在,重复执行以下步骤,直到显示所有卡牌为止:从牌组顶部抽一张牌,显示它,然后将其从牌组中移出。如果牌组中仍有牌,则将下一张处于牌组顶部的牌放在牌组的底部。如果仍有未显示的牌,那么返回步骤 1。否则,停止行动。返回能以递增顺序显示卡牌的牌组顺序。...原创 2019-07-21 11:00:01 · 184 阅读 · 0 评论 -
【leetcode】93. 复原IP地址
题目给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。示例:输入: "25525511135"输出: ["255.255.11.135", "255.255.111.35"]" class=“notranslate”>给定一个只包含数字的字符串,复原它并返回...原创 2019-07-14 14:14:44 · 148 阅读 · 0 评论 -
【leetcode】71. 简化路径
以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜...原创 2019-07-14 13:32:16 · 131 阅读 · 0 评论 -
【leetcode】43. 字符串相乘
题目给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"...原创 2019-07-14 12:35:55 · 115 阅读 · 0 评论 -
【leetcode】76. 最小覆盖子串
题目给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串。示例:输入: S = &“;ADOBECODEBANC&”;, T = "ABC"输出: "BANC"说明: 如果 S 中不存这样的子串,则返回空字符串 ""。 如...原创 2019-07-14 11:12:25 · 95 阅读 · 0 评论 -
【leetcode】567. 字符串的排列
给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。换句话说,第一个字符串的排列之一是第二个字符串的子串。示例1:输入: s1 = “ab” s2 = “eidbaooo”输出: True解释: s2 包含 s1 的排列之一 (“ba”).示例2:输入: s1= “ab” s2 = “eidboaoo”输出: False来源:力扣(LeetCode)...原创 2019-07-14 10:27:02 · 179 阅读 · 0 评论 -
【leetcode】547. 朋友圈 并查集
题目班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已知的朋友圈总数。...原创 2019-07-13 20:56:58 · 469 阅读 · 0 评论 -
【leetcode 】128. 最长连续序列 ,并查集 + hash
题目给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-consecutive-sequence思...原创 2019-07-13 20:29:40 · 359 阅读 · 0 评论 -
leetcode 54. 螺旋矩阵
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]思路是 方向数组 + 边界调整class Solution {public: int dir[4][2] = {...原创 2019-07-01 15:26:39 · 125 阅读 · 0 评论 -
LeetCode - 反转链表 - 初级算法
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL 进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?很简单的 说/** * Definition for singly-linked list. * struct ListNode { * ...原创 2018-10-24 21:22:53 · 148 阅读 · 0 评论