随笔分类 - LeetCode题集
摘要:题目链接:LeetCode 1020 飞地的数量 题目大意: 题解: 很显然,边缘的或者与边缘的直接或间接相连的可以离开网格边界。 从外向内搜索与边缘的直接或间接相连的,并打上标记,再遍历数组统计未打上标记的的个数。 class Solution { privat
阅读全文
摘要:题目链接:LeetCode 10 正则表达式匹配 题目大意: 给你一个字符串和一个字符规律,请你来实现一个支持的正则表达式匹配。 匹配任意单个字符; 匹配零个或多个前面的那一个元素。 所谓匹配,是要涵盖整个字符串的,而不是部分字符串。
阅读全文
摘要:题目链接:LeetCode 31 下一个排列 题目大意: 题解: 注意到下一个排列总是比当前排列要大,除非该排列已经是最大的排列。我们希望找到一种方法,能够找到一个大于当前序列的新序列,且变大的幅度尽可能小。具体地: 我们需要将一个左边的“较小数”与一个右边的“较大数”交换,以能够让当前排列变大,从
阅读全文
摘要:题目链接:LeetCode 剑指Offer38 字符串的排列 题目大意: 输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 题解: 回溯 通过搜索和回溯枚举所有的排列情况,但会有重复的情况。 只要在递归函数中设定一个规则,保证在填每一个空位
阅读全文
摘要:题目链接:LeetCode 136 只出现一次的数字 题目大意: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 不能使用额外的空间。 题解: 由于不能使用额外的空间,所以不能通过计数等方法解决。 于是想到位运算中的异或运算,有以下性质: 任何
阅读全文
摘要:题目链接:LeetCode 1001 网格照明 题目大意: 题解: 假设一盏灯的坐标为,那么它所在的行的数值为,列的数值为,正对角线的数值为,反对角线的数值为。确定某一直线的唯一数值标识后,我们就可以通过哈希表来记录某一直
阅读全文
摘要:题目链接:LeetCode 1143 最长公共子序列 题目大意: 题解: 最长公共子序列模板题,设为字符串与字符串的最长公共子序列长度,则状态转移方程为: \(dp[i][j] = max\{dp[i-1][j-1] + (A[i] ==
阅读全文
摘要:题目链接:LeetCode 剑指Offer51 数组中的逆序对 题目大意: 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 题解: 归并排序过程中计数即可。 class Solution { public: int rev
阅读全文
摘要:题目链接:LeetCode 316 去除重复字母 题目大意: 给你一个字符串,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置)。 题解: 参考自LeedCode官方题解 首先考虑一个简单的问题:给定一个字符串,如何去掉其中的
阅读全文
摘要:题目链接:LeetCode 1414 和为 K 的最少斐波那契数字数目 题目大意: 题解: 参考自LeedCode官方题解 首先找到所有不超过的斐波那契数字,然后每次贪心地选取不超过的最大斐波那契数字,将减去该斐波那契数字,重复该操作直到变为,此时选取的斐波那契数字满足
阅读全文
摘要:题目链接:LeetCode 459 重复的子字符串 题目大意: 给定一个非空的字符串,检查是否可以通过由它的一个子串重复多次构成。 题解: 用算法计算循环节。 如果我们设最小循环节的长度为,那么一定有,即是的倍数。这说明字符串是由长度为
阅读全文
摘要:题目链接:LeetCode 1553 吃掉N个橘子的最少天数 题目大意: 题解: 三条结论: 在任意一次操作之前最多只会有次操作; 在任意一次操作之前最多只会有次操作; 除了最后的一次操作之外,其余连续的操作之后都会有操作或。 证明参考自L
阅读全文
摘要:题目链接:LeetCode 884 两句话中的不常见单词 题目大意: 句子是一串由空格分隔的单词。每个单词仅由小写字母组成。 如果某个单词在其中一个句子中恰好出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的。 给你两个句子和,返回所有不常用单词的列表。返回列表中单词可以按
阅读全文
摘要:题目链接:LeetCode 106 从中序与后序遍历序列构造二叉树 题目大意: 给定两个整数数组和,其中是二叉树的中序遍历,是同一棵树的后序遍历,请你构造并返回这颗二叉树。 题解: 首先要知道,后序遍历的数组最后一个元素
阅读全文
摘要:题目链接:LeetCode 1765 地图中的最高点 题目大意: 题解: 题目要求水域的高度必须为,因此水域的高度是已经确定的值,我们可以从水域出发,推导出其余格子的高度。 首先,计算与水域相邻的格子的高度。对于这些格子来说,其相邻格子中的最小高度即为水域的高度,因此这些格子的高度为$1
阅读全文
摘要:题目链接:LeetCode 384 打乱数组 题目大意: 给你一个整数数组,设计算法来打乱一个没有重复元素的数组。打乱后,数组的所有排列应该是等可能的。 题解: 参考自LeedCode官方题解 首先,我们考虑如何随机打乱一个数组。 不妨设数组,其长度为。我们可以使用如下
阅读全文
摘要:题目链接:LeetCode 1996 游戏中弱角色的数量 题目大意: 题解: 对于攻击值相同的角色,我们按照其防御值从小到大进行排序且按照攻击值从大到小开始遍历,这样就可以保证当前已经遍历过的最大防御值角色的防御值严格大于当前角色的防御值时,则此时的攻击值一定严格大
阅读全文
摘要:题目链接:LeetCode 470 用Rand7()实现Rand10() 题目大意: 题解: 只需要能够满足等概率的生成个不同的数即可,具体的生成方法可以有很多种。 我们可以调用两次之间的随机整数,我们只用到其中的前个用来实现$R
阅读全文