leetcode刷题
enjoy_code_
这个作者很懒,什么都没留下…
展开
-
1025. 除数博弈
解题思路:如果我们想要知道当数字N时爱丽丝赢,就要看N-x时的情况,当N-x爱丽丝赢时,则N时爱丽丝输(相当于N时爱丽丝选X,由于N-x是鲍勃先手选所以必赢),反之,当N-x时爱丽丝输,则N时爱丽丝必赢。(因为鲍勃,爱丽丝都是最佳状态)由于我们知道2爱丽丝赢,3爱丽丝输,则我们就可以由2.3推N-x,N,即状态转移方程:(初始化dp数组为false)if(N % x == 0 && dp[N-x] == false){ dp[N] = true; break;//(由于鲍勃,爱..原创 2020-11-06 11:05:31 · 89 阅读 · 0 评论 -
面试题 17.16. 按摩师 (动态规划easy)
一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。class Solution {public: int massage(vector<int>& nums) { //leetcode老是出这种边界情况,一定要注意。 if(nums.size()==0){ retu原创 2020-11-06 10:41:57 · 304 阅读 · 0 评论 -
1002. 查找常用字符
给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。你可以按任意顺序返回答案。示例 1:输入:[“bella”,“label”,“roller”]输出:[“e”,“l”,“l”]示例 2:输入:[“cool”,“lock”,“cook”]输出:[“c”,“o”]提示:1 <= A.length <= 1001 &原创 2020-10-14 10:19:10 · 118 阅读 · 0 评论 -
1512. 好数对的数目
给你一个整数数组 nums 。如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。返回好数对的数目。示例 1:输入:nums = [1,2,3,1,1,3]输出:4解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始示例 2:输入:nums = [1,1,1,1]输出:6解释:数组中的每组数字都是好数对示例 3:输入:nums = [1,2,3]输原创 2020-09-08 21:56:58 · 241 阅读 · 0 评论 -
面试题 10.01. 合并排序的数组
给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。初始化 A 和 B 的元素数量分别为 m 和 n。示例:输入:A = [1,2,3,0,0,0], m = 3B = [2,5,6], n = 3输出: [1,2,2,3,5,6]第一种方法:直接把B数组放在A数组的缓冲空间,然后再使用sort排序c...原创 2020-03-03 10:15:19 · 240 阅读 · 0 评论 -
38. 外观数列
38. 外观数列「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:1112112111112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , ...原创 2020-02-29 17:41:20 · 390 阅读 · 0 评论 -
面试题 03.02. 栈的最小值 ( 实现最小栈 )
请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复杂度必须为O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.getMin(); ...原创 2020-02-29 16:51:41 · 269 阅读 · 0 评论 -
面试题 02.06. 回文链表 (使用 deque双端队列容器 )
编写一个函数,检查输入的链表是否是回文的。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?执行用时 :44 ms, 在所有 C++ 提交中击败了7.92%的用户内存消耗 :17 MB, 在所有 C++ 提交中击败了100.0...原创 2020-02-29 16:34:35 · 187 阅读 · 0 评论 -
面试题 02.03. 删除中间节点
实现一种算法,删除单向链表中间的某个节点(除了第一个和最后一个节点,不一定是中间节点),假定你只能访问该节点。示例:输入:单向链表a->b->c->d->e->f中的节点c结果:不返回任何数据,但该链表变为a->b->d->e->f/** * Definition for singly-linked list. * struct L...原创 2020-02-29 16:12:14 · 112 阅读 · 0 评论 -
28. 一行实现 strStr() (附上 string容器 的 find函数 的使用说明)
实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needle = “bba...原创 2020-02-29 12:05:11 · 118 阅读 · 0 评论 -
27. 移除元素
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均...原创 2020-02-29 11:50:45 · 90 阅读 · 0 评论 -
26. 删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。class Soluti...原创 2020-02-29 11:26:43 · 82 阅读 · 0 评论 -
1221. 分割平衡字符串
在一个「平衡字符串」中,‘L’ 和 ‘R’ 字符的数量是相同的。给出一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。返回可以通过分割得到的平衡字符串的最大数量。示例 1:输入:s = “RLRRLLRLRL”输出:4解释:s 可以分割为 “RL”, “RRLL”, “RL”, “RL”, 每个子字符串中都包含相同数量的 ‘L’ 和 ‘R’。示例 2:输入:s = “R...原创 2020-02-29 11:05:02 · 157 阅读 · 0 评论 -
20. 有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: trueclass Solution {public: bool i...原创 2020-02-27 11:34:54 · 108 阅读 · 0 评论 -
求合法的出栈序列 (附上 leetcode946. 验证栈序列 )
已知从1~n的数字序列,按顺序出栈。每个数字入栈后有两种选择:1-立即出栈,2-等待后面的数字入栈出栈后,该数字再出栈。现在给出一个数字序列,求该数字序列是否合法?#include<iostream>#include<algorithm>#include<vector>#include<bits/stdc++.h>using names...原创 2020-02-27 10:16:53 · 536 阅读 · 0 评论 -
LCP 2. 分式化简
有一个同学在学习分式。他需要将一个连分数化成最简分数,你能帮助他吗?连分数是形如上图的分式。在本题中,所有系数都是大于等于0的整数。输入的cont代表连分数的系数(cont[0]代表上图的a0,以此类推)。返回一个长度为2的数组[n, m],使得连分数的值等于n / m,且n, m最大公约数为1。示例 1:输入:cont = [3, 2, 0, 2]输出:[13, 4]解释:原连分数...原创 2020-02-25 10:42:15 · 235 阅读 · 0 评论 -
240. 搜索二维矩阵 II
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, ...原创 2020-02-24 19:46:09 · 300 阅读 · 0 评论 -
238. 除自身以外数组的乘积
给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组...原创 2020-02-24 17:52:41 · 79 阅读 · 0 评论 -
5169. 日期之间隔几天
class Solution {public: void CutString(string &s) { for (int i = 0; i < s.size(); i++) { if (s[i] == '-') { s.erase(s.begin() + i); } ...原创 2020-02-23 11:59:57 · 138 阅读 · 0 评论 -
13. 罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12...原创 2020-02-21 19:52:33 · 144 阅读 · 0 评论 -
1290. 二进制链表转整数
给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。示例 1:输入:head = [1,0,1]输出:5解释:二进制数 (101) 转化为十进制数 (5)示例 2:输入:head = [0]输出:0提示:链表不为空。链表的结点总数不超过 30。每个结点的值不是 0 就是...原创 2020-02-21 17:03:10 · 327 阅读 · 0 评论 -
784. 字母大小写全排列 (字符全排列问题多复习下)
字母大小写全排列执行结果: 通过显示详情 :执行用时 : 4 ms , 在所有 C++ 提交中击败了 98.40% 的用户内存消耗 :11.7 MB ,在所有 C++ 提交中击败了87.63% 的用户给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。示例:输入: S = “a1b2”输出: [“a1b2”, ...原创 2020-02-21 11:41:41 · 444 阅读 · 0 评论 -
771. 宝石与石头 (使用map容器)
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = “aA”, S = “aAAbbbb”输出: 3示例 2:输入: J = “z”, S = “ZZ”输...原创 2020-02-21 09:43:23 · 104 阅读 · 0 评论 -
1347. 制造字母异位词的最小步骤数
制造字母异位词的最小步骤数给你两个长度相等的字符串 s 和 t。每一个步骤中,你可以选择将 t 中的 任一字符 替换为 另一个字符。返回使 t 成为 s 的字母异位词的最小步骤数。字母异位词: 指字母相同,但排列不同的字符串。示例 1:输出:s = “bab”, t = “aba”输出:1提示:用 ‘b’ 替换 t 中的第一个 ‘a’,t = “bba” 是 s 的一个字母异位词...原创 2020-02-16 09:38:35 · 298 阅读 · 0 评论 -
1309. 解码字母到整数映射
1309. 解码字母到整数映射给你一个字符串 s,它由数字(‘0’ - ‘9’)和 ‘#’ 组成。我们希望按下述规则将 s 映射为一些小写英文字符:字符(‘a’ - ‘i’)分别用(‘1’ - ‘9’)表示。字符(‘j’ - ‘z’)分别用(‘10#’ - ‘26#’)表示。返回映射之后形成的新字符串。题目数据保证映射始终唯一。示例 1:输入:s = “10#11#12”输出:“...原创 2020-02-14 16:25:48 · 313 阅读 · 0 评论