LeetCode解题报告
按照专题模块进行练习,并将解题代码整理为结题报告,仅供学术交流用。
qq_34732729
这个作者很懒,什么都没留下…
展开
-
LeetCode—— 319 灯泡开关
问题描述初始时有n个灯泡关闭。 第 1 轮,你打开所有的灯泡。 第 2 轮,每两个灯泡你关闭一次。 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。第i 轮,每i个灯泡切换一次开关。 对于第n轮,你只切换最后一个灯泡的开关。 找出n轮后有多少个亮着的灯泡。示例输入: 3输出: 1 解释: 初始时, 灯泡状态 [关闭, 关闭, 关闭].第...原创 2020-01-18 14:03:27 · 530 阅读 · 0 评论 -
LeetCode—— 292 Nim游戏
问题描述你和你的朋友,两个人一起玩Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 ...原创 2020-01-15 17:21:10 · 184 阅读 · 0 评论 -
LeetCode—— 83 删除排序链表中的重复元素
问题描述给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例1:输入: 1->1->2输出: 1->2示例2:输入: 1->1->2->3->3输出: 1->2->3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-duplicat...原创 2020-01-15 16:38:18 · 126 阅读 · 0 评论 -
LeetCode—— 844 比较含退格的字符串
问题描述给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。示例 1:输入:S = "ab#c", T = "ad#c"输出:true解释:S 和 T 都会变成 “ac”。示例 2:输入:S = "ab##", T = "c#d#"输出:true解释:S 和 T 都会变成 “”。示例 3:...原创 2020-01-15 16:20:02 · 183 阅读 · 0 评论 -
LeetCode—— 1046 最后一块石头的重量
问题描述有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块最重的石头,然后将它们一起粉碎。假设石头的重量分别为x 和y,且x <= y。那么粉碎的可能结果如下:如果x == y,那么两块石头都会被完全粉碎; 如果x != y,那么重量为x的石头将会完全粉碎,而重量为y的石头新重量为y-x。最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头...原创 2020-01-15 15:56:42 · 247 阅读 · 0 评论 -
LeetCode—— 1029 两地调度
问题描述公司计划面试 2N 人。第 i 人飞往 A 市的费用为 costs[i][0],飞往 B 市的费用为 costs[i][1]。返回将每个人都飞到某座城市的最低费用,要求每个城市都有 N 人抵达。示例:输入:[[10,20],[30,200],[400,50],[30,20]]输出:110解释:第一个人去 A 市,费用为 10。第二个人去 A 市,费用为 30。第...原创 2020-01-15 10:08:46 · 277 阅读 · 0 评论 -
LeetCode—— 1005 K次取反后最大化的数组和
问题描述给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个个索引 i并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次。(我们可以多次选择同一个索引 i。)以这种方式修改数组后,返回数组可能的最大和。示例 1:输入:A = [4,2,3], K = 1输出:5解释:选择索引 (1,) ,然后 A 变为 [4,-2,3]。示例 2:输入:A...原创 2020-01-14 13:39:09 · 183 阅读 · 0 评论 -
LeetCode—— 720 词典中最长的单词
问题描述给出一个字符串数组words组成的一本英语词典。从中找出最长的一个单词,该单词是由words词典中其他单词逐步添加一个字母组成。若其中有多个可行的答案,则返回答案中字典序最小的单词。若无答案,则返回空字符串。示例 1:输入: words = ["w","wo","wor","worl", "world"]输出: "world"解释: 单词"world"可由"w",...原创 2020-01-06 18:02:49 · 286 阅读 · 0 评论 -
LeetCode—— 944 删列造序
问题描述给定由N个小写字母字符串组成的数组 A,其中每个字符串长度相等。删除 操作的定义是:选出一组要删掉的列,删去A 中对应列中的所有字符,形式上,第 n列为[A[0][n], A[1][n], ..., A[A.length-1][n]])。比如,有A = ["abcdef", "uvwxyz"],要删掉的列为{0, 2, 3},删除后A为["bef", ...原创 2020-01-13 11:30:42 · 222 阅读 · 0 评论 -
LeetCode—— 860 柠檬水找零
问题描述在柠檬水摊上,每一杯柠檬水的售价为5美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回true,否则返回 false。示例 ...原创 2020-01-11 16:23:34 · 203 阅读 · 0 评论 -
LeetCode—— 455 分发饼干
问题描述假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj。如果 sj >= gi,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意:你可以假设胃口...原创 2020-01-11 16:03:47 · 178 阅读 · 0 评论 -
LeetCode—— 953 验证外星语词典
问题描述某种外星语也使用英文小写字母,但可能顺序 order 不同。字母表的顺序(order)是一些小写字母的排列。给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的单词在这种外星语中按字典序排列时,返回 true;否则,返回 false。示例 1:输入:words = ["hello","leetcode"], order = "hlabcdef...原创 2020-01-11 09:40:24 · 230 阅读 · 0 评论 -
LeetCode—— 1078 Bigram分词
问题描述给出第一个词first 和第二个词second,考虑在某些文本text中可能以 "first second third" 形式出现的情况,其中second紧随first出现,third紧随second出现。对于每种这样的情况,将第三个词 "third" 添加到答案中,并返回答案。示例 1:输入:text = "alice is a good girl ...原创 2020-01-10 17:37:02 · 188 阅读 · 0 评论 -
LeetCode—— 961 重复N次的元素
问题描述在大小为2N的数组A中有N+1个不同的元素,其中有一个元素重复了N次。返回重复了N次的那个元素。示例 1:输入:[1,2,3,3]输出:3示例 2:输入:[2,1,2,5,3,2]输出:2示例3:输入:[5,1,5,2,5,3,5,4]输出:5提示:4 <= A.length <= 10000 0 <...原创 2020-01-10 17:10:33 · 143 阅读 · 0 评论 -
LeetCode—— 884 两句话中不常见单词
问题描述给定两个句子A和B。(句子是一串由空格分隔的单词。每个单词仅由小写字母组成。)如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的。返回所有不常用单词的列表。您可以按任何顺序返回列表。示例 1:输入:A = "this apple is sweet", B = "this apple is sour"输出:["sw...原创 2020-01-08 13:25:46 · 162 阅读 · 0 评论 -
LeetCode—— 811 子域名访问计数
问题描述一个网站域名,如"discuss.leetcode.com",包含了多个子域名。作为顶级域名,常用的有"com",下一级则有"leetcode.com",最低的一级为"discuss.leetcode.com"。当我们访问域名"discuss.leetcode.com"时,也同时访问了其父域名"leetcode.com"以及顶级域名"com"。给定一个带访问次数和域名的组合,要求...原创 2020-01-08 11:01:12 · 178 阅读 · 0 评论 -
LeetCode—— 1207 独一无二的出现次数
问题描述给你一个整数数组arr,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回true;否则返回false。示例 1:输入:arr = [1,2,2,1,1,3]输出:true解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。示例 2:输入:arr = [1,2]输出:fal...原创 2020-01-07 20:29:32 · 259 阅读 · 0 评论 -
LeetCode—— 748 最短完整词
问题描述如果单词列表(words)中的一个单词包含牌照(licensePlate)中所有的字母,那么我们称之为完整词。在所有完整词中,最短的单词我们称之为最短完整词。单词在匹配牌照中的字母时不区分大小写,比如牌照中的"P"依然可以匹配单词中的"p"字母。我们保证一定存在一个最短完整词。当有多个单词都符合最短完整词的匹配条件时取单词列表中最靠前的一个。牌照中可能包含多个相同的...原创 2020-01-07 20:10:08 · 183 阅读 · 0 评论 -
LeetCode—— 690 员工的重要性
问题描述给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度和 直系下属的id。比如,员工1是员工2的领导,员工2是员工3的领导。他们相应的重要度为15, 10, 5。那么员工1的数据结构是[1, 15, [2]],员工2的数据结构是[2, 10, [3]],员工3的数据结构是[3, 5, []]。注意虽然员工3也是员工1的一个下属,但是由于并不是直系下属,因此没有体现在员工1...原创 2020-01-06 17:19:53 · 222 阅读 · 0 评论 -
LeetCode—— 594 最长和谐子序列
问题描述和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。示例 1:输入: [1,3,2,2,5,2,3,7]输出: 5原因: 最长的和谐数组是:[3,2,2,2,3].说明: 输入的数组长度最大不超过20,000.来源:力扣(LeetCode)链接:https://leetco...原创 2020-01-06 16:31:44 · 247 阅读 · 0 评论 -
LeetCode—— 575 分糖果
问题描述给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。示例 1:输入: candies = [1,1,2,2,3,3]输出: 3解析: 一共有三种种类的糖果,每一种都有两个。 最优分配方案:妹妹获得[1,2,3],弟弟也获得[1,2,3]。这样使妹妹获得...原创 2020-01-06 16:03:53 · 183 阅读 · 0 评论 -
LeetCode—— 463 岛屿的周长
问题描述给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地0 表示水域。网格中的格子水平和垂直方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100 。计算这个岛屿的周...原创 2020-01-06 15:15:56 · 180 阅读 · 0 评论 -
LeetCode—— 447 回旋镖的数量
问题描述给定平面上n 对不同的点,“回旋镖” 是由点表示的元组(i, j, k),其中i和j之间的距离和i和k之间的距离相等(需要考虑元组的顺序)。找到所有回旋镖的数量。你可以假设n 最大为 500,所有点的坐标在闭区间 [-10000, 10000] 中。示例:输入:[[0,0],[1,0],[2,0]]输出:2解释:两个回旋镖为 [[1,...原创 2020-01-06 14:28:12 · 176 阅读 · 0 评论 -
LeetCode—— 500 键盘行
问题描述给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。示例:输入: ["Hello", "Alaska", "Dad", "Peace"] 输出: ["Alaska", "Dad"] 注意:你可以重复使用键盘上同一字符。 你可以假设输入的字符串将只包含字母。来源:力扣(LeetCode)链接:https://leetcode-c...原创 2019-12-21 15:53:39 · 162 阅读 · 0 评论 -
LeetCode—— 409 最长回文串
题目描述给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如"Aa"不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:"abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。来源:力扣(LeetCode)链接:ht...原创 2019-12-20 16:14:22 · 176 阅读 · 0 评论 -
LeetCode—— 389 找不同
问题描述给定两个字符串 s 和 t,它们只包含小写字母。字符串t由字符串s随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例:输入: s = "abcd" t = "abcde" 输出: e 解释: 'e' 是那个被添加的字母。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/fi...原创 2019-12-18 17:59:10 · 190 阅读 · 0 评论 -
LeetCode—— 299 猜数字游戏
问题描述你正在和你的朋友玩猜数字(Bulls and Cows)游戏:你写下一个数字让你的朋友猜。每次他猜测后,你给他一个提示,告诉他有多少位数字和确切位置都猜对了(称为“Bulls”, 公牛),有多少位数字猜对了但是位置不对(称为“Cows”, 奶牛)。你的朋友将会根据提示继续猜,直到猜出秘密数字。请写出一个根据秘密数字和朋友的猜测数返回提示的函数,用 A 表示公牛,用B表示奶牛。...原创 2019-12-18 17:41:06 · 257 阅读 · 0 评论 -
LeetCode—— 290 单词规律
问题描述给定一种规律 pattern和一个字符串str,判断 str 是否遵循相同的规律。这里的遵循指完全匹配,例如,pattern里的每个字母和字符串str中的每个非空单词之间存在着双向连接的对应规律。示例1:输入: pattern = "abba", str = "dog cat cat dog"输出: true示例 2:输入:pattern = "a...原创 2019-12-18 09:43:24 · 221 阅读 · 0 评论 -
LeetCode—— 242 有效的字母异位
问题描述给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例1: 输入: s = "anagram", t = "nagaram" 输出: true示例 2: 输入: s = "rat", t = "car" 输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符怎么办?你能否调整你...原创 2019-12-16 16:18:02 · 188 阅读 · 0 评论 -
LeetCode—— 852 山脉数组的峰顶索引
问题描述我们把符合下列属性的数组A称作山脉:A.length >= 3 存在 0 < i< A.length - 1 使得A[0] < A[1] < ... A[i-1] < A[i] > A[i+1] > ... > A[A.length - 1] 给定一个确定为山脉的数组,返回任何满足A[0] < A[1] <...原创 2019-12-16 14:39:37 · 293 阅读 · 0 评论 -
LeetCode—— 475 供暖器
问题描述冬季已经来临。你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。现在,给出位于一条水平线上的房屋和供暖器的位置,找到可以覆盖所有房屋的最小加热半径。所以,你的输入将会是房屋和供暖器的位置。你将输出供暖器的最小加热半径。说明:给出的房屋和供暖器的数目是非负数且不会超过 25000。 给出的房屋和供暖器的位置均是非负数且不会超过10^9。 只要房屋位于供暖器的半...原创 2019-12-16 13:48:50 · 175 阅读 · 0 评论 -
LeetCode—— 1108 IP地址无效化
问题描述给你一个有效的IPv4地址address,返回这个 IP 地址的无效化版本。所谓无效化IP 地址,其实就是用"[.]"代替了每个"."。示例 1:输入:address = "1.1.1.1"输出:"1[.]1[.]1[.]1"示例 2:输入:address = "255.100.50.0"输出:"255[.]100[.]50[.]0"提示:给...原创 2019-12-16 11:44:09 · 164 阅读 · 0 评论 -
LeetCode—— 1071 字符串的最大公因子
问题描述对于字符串S 和T,只有在 S = T + ... + T(T与自身连接 1 次或多次)时,我们才认定“T 能除尽 S”。返回字符串X,要求满足X 能除尽 str1 且X 能除尽 str2。示例 1:输入:str1 = "ABCABC", str2 = "ABC"输出:"ABC"示例 2:输入:str1 = "ABABAB", str2 = "ABAB...原创 2019-12-16 11:20:18 · 189 阅读 · 0 评论 -
LeetCode—— 973 重新排列日志文件
问题描述你有一个日志数组 logs。每条日志都是以空格分隔的字串。对于每条日志,其第一个字为字母数字标识符。然后,要么:标识符后面的每个字将仅由小写字母组成,或; 标识符后面的每个字将仅由数字组成。我们将这两种日志分别称为字母日志和数字日志。保证每个日志在其标识符后面至少有一个字。将日志重新排序,使得所有字母日志都排在数字日志之前。字母日志按内容字母顺序排序,忽略标识符;在内容...原创 2019-12-16 10:46:12 · 164 阅读 · 0 评论 -
LeetCode—— 1189 “气球”的最大数量
问题描述给你一个字符串text,你需要使用 text 中的字母来拼凑尽可能多的单词"balloon"(气球)。字符串text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词"balloon"。示例 1:输入:text = "nlaebolko"输出:1示例 2:输入:text = "loonbalxballpoon"输出:2示例 3:输入:...原创 2019-12-13 18:29:48 · 199 阅读 · 0 评论 -
LeetCode—— 929 独特的电子邮件地址
问题描述每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔。例如,在alice@leetcode.com中,alice是本地名称,而leetcode.com是域名。除了小写字母,这些电子邮件还可能包含 '.' 或 '+'。如果在电子邮件地址的本地名称部分中的某些字符之间添加句点('.'),则发往那里的邮件将会转发到本地名称中没有点的同一地址。例如,"alice....原创 2019-12-13 17:51:01 · 469 阅读 · 0 评论 -
LeetCode—— 1221 分割平衡字符串
问题描述在一个「平衡字符串」中,'L' 和 'R' 字符的数量是相同的。给出一个平衡字符串s,请你将它分割成尽可能多的平衡字符串。返回可以通过分割得到的平衡字符串的最大数量。示例 1:输入:s = "RLRRLLRLRL"输出:4解释:s 可以分割为 "RL", "RRLL", "RL", "RL", 每个子字符串中都包含相同数量的 'L' 和 'R'。示例 2:输...原创 2019-12-12 19:09:51 · 218 阅读 · 0 评论 -
LeetCode—— 925 长按键入
问题描述你的朋友正在使用键盘输入他的名字name。偶尔,在键入字符c时,按键可能会被长按,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回True。示例 1:输入:name = "alex", typed = "aaleex"输出:true解释:'alex' 中的 'a' 和 '...原创 2019-12-12 18:47:41 · 160 阅读 · 0 评论 -
LeetCode—— 917 仅仅反转字母
问题描述给定一个字符串S,返回“反转后的”字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。示例 1:输入:"ab-cd"输出:"dc-ba"示例 2:输入:"a-bC-dEf-ghIj"输出:"j-Ih-gfE-dCba"示例 3:输入:"Test1ng-Leet=code-Q!"输出:"Qedo1ct-eeLg=ntse-T!"提示:...原创 2019-12-12 16:01:17 · 233 阅读 · 0 评论 -
LeetCode—— 893 特殊等价字符串组
问题描述你将得到一个字符串数组 A。如果经过任意次数的移动,S == T,那么两个字符串 S 和 T 是特殊等价的。一次移动包括选择两个索引 i 和 j,且i % 2 == j % 2,交换 S[j] 和 S [i]。现在规定,A 中的特殊等价字符串组是 A 的非空子集 S,这样不在 S 中的任何字符串与 S 中的任何字符串都不是特殊等价的。返回 A中特殊等价字符串组的数量...转载 2019-12-12 15:53:07 · 562 阅读 · 0 评论