![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode
#
ACTIM__
ACTIM
展开
-
LeetCode刷题:【待做 1162】 地图分析(多源最短路径/BFS - 超级源点)
官方题解本题待做…原创 2020-03-29 23:44:42 · 346 阅读 · 1 评论 -
LeetCode刷题: 【820】单词的压缩编码(字典树、后缀匹配)(c++ 遍历 map)
1. 题目2. 思路官方题解【1. 后缀记录】【2. 字典树】其他题解【3. 反转排序】3. 代码(字典树)/*** 字典树结点*/class Tree{private: unordered_map<char, Tree*> node;public: bool add(char c){ if(node[c] != 0){ ...原创 2020-03-29 01:06:57 · 360 阅读 · 0 评论 -
LeetCode刷题: 【914】卡牌分组(求N个数的最大公因数)
1. 题目2. 思路如何求N个数的最大公因数呢?(N > 1)在初等数学里,有这么几个定理1、任何一个整数,都可以分解为素数因子的乘积比如24 = 2* 2* 2 * 3;26 = 2 * 13;分解时应该从2开始分解起2、若干个数的最大公因数是共同素数因子的乘积比如 求 48 60 72 的最大公因数48 = 2*2*2*2*360 = 2*2*3*572 = ...原创 2020-03-27 22:36:29 · 354 阅读 · 0 评论 -
LeetCode刷题: 【876】链表的中间结点(快慢指针)
1. 题目2. 思路在遍历单链表过程中,尾指针+2,中指针+13. 代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */...原创 2020-03-23 22:42:20 · 174 阅读 · 0 评论 -
LeetCode刷题: 【945】使数组唯一的最小增量
1. 题目2. 思路首先对数组排序。只允许加操作,在按任何次序使元素增加的过程中,保持最少次数的结果是一样的。只需让排好序的数组中每个元素都至少比前一个元素大一即可,差值即为增加次数。3. 代码class Solution {public: int minIncrementForUnique(vector<int>& A) { sort(...原创 2020-03-22 21:27:13 · 135 阅读 · 0 评论 -
LeetCode刷题: 【365】水壶问题(关于游戏型问题可以使用系统搜索)
题目思路一、回溯法(或者分支限界)在任意一个时刻,我们可以且仅可以采取以下几种操作:把 X 壶的水灌进 Y 壶,直至灌满或倒空;把 Y 壶的水灌进 X 壶,直至灌满或倒空;把 X 壶灌满;把 Y 壶灌满;把 X 壶倒空;把 Y 壶倒空。– — –代码待写二、贝祖定理而贝祖定理告诉我们,ax+by=z 有解当且仅当 z 是 x, y 的最大公约数的倍数。因此我们只需要找到 x...原创 2020-03-21 20:47:11 · 291 阅读 · 2 评论 -
LeetCode刷题: 【409】 最长回文串
1. 题目2. 思路字符计数偶数必然可用于构成回文奇数只需-1,即可构成回文在有奇数的情况下,最后需要+1[aabbcaabb]3. 代码class Solution {public: int longestPalindrome(string s) { // 字符计数 unordered_map<char, int> temp...原创 2020-03-19 23:50:42 · 137 阅读 · 0 评论 -
LeetCode刷题: 【1160】 拼写单词(c++语法相关:map遍历、for标签)
1. 题目2. 解题思路计数即可3. 代码class Solution {public: int countCharacters(vector<string>& words, string chars) { map<char, int> chars_map; for(char s : chars){ ...原创 2020-03-17 21:42:52 · 222 阅读 · 0 评论 -
LeetCode刷题: 【695】 岛屿的最大面积(深度优先搜索:递归)
1. 题目2. 解题思路(DFS)以迭代中遇到的1为起点向四周进行深度优先搜索,把搜索过的位置置03. 代码class Solution {public: int maxAreaOfIsland(vector<vector<int>>& grid) { int max_ans = 0; // 在矩阵中按行搜索 1...原创 2020-03-15 20:12:20 · 270 阅读 · 0 评论 -
LeetCode刷题: 【300】 最长上升子序列(动态规划 / 贪心算法)
1. 题目2. 解法(动态规划)2.1 解题思路比暴力法(使用回溯法遍历所有子序列,判定严格上升序列,并取最大值,时间复杂度O(n*2^n))好,动态规划,分别计算以每个元素结束的上升子序列长度,需要向前遍历寻找最长上升子序列,再加1,时间复杂度O(n^2)2.2 代码class Solution {public: int lengthOfLIS(vector<int&...原创 2020-03-15 03:37:30 · 404 阅读 · 0 评论 -
LeetCode刷题: 【169】多数元素(摩尔投票法)
1. 题目给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/majority-element著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2. 思路...原创 2020-03-13 23:48:41 · 288 阅读 · 0 评论 -
LeetCode刷题: 【1071】字符串的最大公因子(辗转相除法)
1. 题目2. 解题思路满足题目要求的子串长度为两个字符串长度的最大公因数gcd计算最大公因数gcd,若两个字符串以gcd为周期,且前gcd字符相同则前gcd字符为题解PS: 如果str1 + str2 == str2 + str1则一定有公因子辗转相除法:两个数的最大公约数等于它们中较小的数和两数之差的最大公约数。3. 代码class Solution {public:...原创 2020-03-12 17:08:23 · 465 阅读 · 0 评论 -
LeetCode刷题: 【1013】将数组分成和相等的三个部分
题目给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果可以找出索引 i+1 < j 且满足 (A[0] + A[1] + … + A[i] == A[i+1] + A[i+2] + … + A[j-1] == A[j] + A[j-1] + … + A[A.length - ...原创 2020-03-11 23:28:17 · 190 阅读 · 0 评论 -
LeetCode刷题: 【543】二叉树的直径(迭代:深度优先搜索)
1. 题目2. 解题思路使用深度优先搜索,在回退时记录当前结点左右子树深度之和作为可能的最大直径,并计算以当前结点为根节点的树的深度,为父结点计算提供数据计算所有结点的左右子树深度,其和最大的即为最大直径3. 代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * ...原创 2020-03-10 23:11:45 · 274 阅读 · 0 评论 -
LeetCode刷题: 【121】买卖股票的最佳时机
1. 题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock著作权归领扣网络所有。商...原创 2020-03-09 23:21:20 · 145 阅读 · 0 评论 -
LeetCode刷题: 【322】零钱兑换(动态规划)
1. 题目给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/coin-change著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2. 解题思路动态规划...原创 2020-03-08 17:17:17 · 322 阅读 · 0 评论 -
【LeetCode 第 21 场双周赛】5336. 上升下降字符串
1. 题目2. 代码class Solution {public: string sortString(string s) { char map[26] = {0}; int size = s.length(); string ans = ""; // 提取字符 for(int i...原创 2020-03-08 00:10:08 · 165 阅读 · 0 评论 -
LeetCode刷题: 【1103】分糖果 II(等差数列)
1. 题目排排坐,分糖果。我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n 颗糖果。然后,我们再回到队伍的起点,给第一个小朋友 n + 1 颗糖果,第二个小朋友 n + 2 颗,依此类推,直到给最后一个小朋友 2 * n 颗糖果。重复上述过程(每次都比上一...原创 2020-03-06 00:14:24 · 316 阅读 · 0 评论 -
LeetCode刷题: 【994】腐烂的橘子
1. 题目在给定的网格中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/rot...原创 2020-03-04 23:00:03 · 177 阅读 · 0 评论 -
LeetCode刷题: 【206】反转链表(c++)
1. 题目反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL2. 解题思路只需转换每个箭头的方向即可,例如 Node0->Node1->Node2只需Node0.next = NULLNode1.next = Node0Node2.next ...原创 2020-03-02 22:46:28 · 176 阅读 · 0 评论 -
LeetCode刷题: 【225】用队列实现栈(c++)
1. 题目描述使用队列实现栈的下列操作:push(x) -- 元素 x 入栈pop() -- 移除栈顶元素top() -- 获取栈顶元素empty() -- 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是push to back,peek/pop from front,size, 和is empty这些操作是合法的。你所使用的语言也许不支持队列。 你可以使用 l...原创 2020-03-01 15:24:19 · 182 阅读 · 0 评论 -
LeetCode刷题: 【338】比特位计数(动态规划)
1. 题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/counting-bits/著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2. 思路 (最高有效位 + 动态规划)当 num = 0 时,temp[0] = 0;当 num = 1 时,temp[1] = 1;b = 2^1当 num = 2...原创 2020-02-20 18:55:33 · 208 阅读 · 0 评论 -
LeetCode刷题: 【5】最长回文子串 (动态规划)
1. 题目给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-palindromi...原创 2020-01-09 10:32:30 · 281 阅读 · 0 评论 -
LeetCode刷题: 【15】三数之和
1. 题目给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]来源:力扣(Leet...原创 2019-09-18 23:30:47 · 272 阅读 · 0 评论 -
LeetCode刷题: 【101】对称二叉树
1. 题目给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3说明:如果你可以运用递归和迭代两种方法解决这...原创 2019-06-07 15:25:40 · 141 阅读 · 2 评论 -
LeetCode刷题: 【76】最小覆盖子串
1. 题目给你一个字符串 S、一个字符串 T,请在字符串 S里面找出:包含 T所有字母的最小子串。示例:输入: S = "ADOBECODEBANC", T = "ABC"输出: "BANC"说明:如果 S 中不存这样的子串,则返回空字符串 “”。如果 S 中存在这样的子串,我们保证它是唯一的答案。链接:https://leetcode-cn.com/problems/minimu...原创 2019-06-12 15:51:58 · 196 阅读 · 0 评论 -
LeetCode刷题: 【120】三角形最小路径和
1. 题目:给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。...原创 2019-05-30 22:00:10 · 214 阅读 · 0 评论 -
LeetCode刷题: 【566】重塑矩阵
556.重塑矩阵在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:...原创 2019-05-25 19:25:59 · 292 阅读 · 0 评论