算法刷题
Metralix
caiji
展开
-
leetcode-41-缺失的第一个正数-hard
题目描述给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/first-missing-positive著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。...原创 2019-12-20 21:50:45 · 126 阅读 · 0 评论 -
leetcode-38-报数-easy
题目描述描述有点傻逼的报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1112112111112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即...原创 2019-12-19 19:58:36 · 165 阅读 · 0 评论 -
leetcode-36-有效的数独-medium
题目说明判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。示例 1:输入:[[“5”,“3”,".",".",“7”,".",".",".","."],[“6”,".",".",“1”,“9”,“5”,"."...原创 2019-12-19 19:21:12 · 152 阅读 · 0 评论 -
leetcode-24-在排序数组中查找元素的第一个和最后一个位置-medium
题目描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,8,8,1...原创 2019-12-16 22:29:34 · 137 阅读 · 0 评论 -
leetcode-周赛no.167-875 / 1534
第一题给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。10min 1A/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; *...原创 2019-12-15 19:13:17 · 205 阅读 · 0 评论 -
*leetcode-33-搜索旋转排序数组-medium
题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2]...原创 2019-12-13 08:37:06 · 84 阅读 · 0 评论 -
*leetcode-29-两数相除-medium
题目描述给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。示例 1:输入: dividend = 10, divisor = 3输出: 3示例 2:输入: dividend = 7, divisor = -3输出: -2说明:被除数和除数...原创 2019-12-10 17:15:46 · 138 阅读 · 0 评论 -
leetcode-24-实现 strStr()-easy
题目描述实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needl...原创 2019-12-09 16:38:26 · 85 阅读 · 0 评论 -
leetcode-26-删除排序数组中的重复项-easy
题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:...原创 2019-12-08 13:05:24 · 96 阅读 · 0 评论 -
*leetcode-22-括号生成-medium
题目描述给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/generate-parentheses著...原创 2019-12-08 12:37:54 · 139 阅读 · 1 评论 -
*leetcode-21-合并两个有序链表-easy
题目描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解题思路递归思路代码简洁优美高效收获很大第一次看到这种链表和指针的递归,感觉挺牛逼的,学到东西了。class Solution{...原创 2019-12-04 16:51:12 · 113 阅读 · 0 评论 -
leetcode-20-有效地括号-easy
#题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例...原创 2019-12-03 17:21:12 · 477 阅读 · 0 评论 -
*leetcode-19-删除链表的倒数第N个节点-medium
题目描述给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?解题思路简单思路:一次遍历求长度,一次遍历删节点但是这个简单思路执...原创 2019-12-03 16:27:22 · 97 阅读 · 0 评论 -
*leetcode-17-电话号码地字母组合-medium
题目描述详细描述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母解题思路第一眼看时不会做看了题解,比较简单的DFS,注意一下substr的用法就行了class Solution {public: map<char,string> mp = {{'2',"abc"},{'3'...原创 2019-12-01 20:00:10 · 103 阅读 · 0 评论 -
*leetcode-15-三数之和-medium
问题描述给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]解题思路第一反应不会做,...原创 2019-11-28 21:14:26 · 149 阅读 · 1 评论 -
leetcode-14-最长公共前缀-easy
题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。题解暴力,easy my friend...原创 2019-11-28 09:36:43 · 107 阅读 · 0 评论 -
leetcode
题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列...原创 2019-11-27 15:44:29 · 103 阅读 · 0 评论 -
*leetcode-10-正则表达式-hard
题目描述给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s = “a...原创 2019-11-27 10:42:47 · 265 阅读 · 0 评论 -
*leetcode-11-盛最多水的容器-medium
题目描述给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。示例图点这里示例:输入: [1,8,6,2,5,4,8,3,7]输出: 49题解...原创 2019-11-26 08:27:36 · 98 阅读 · 0 评论 -
leetcode-8-字符串转换整数(atoi)-medium
题目描述请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字...原创 2019-11-25 00:14:48 · 158 阅读 · 0 评论 -
leetcode-7-整数反转-easy
题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321解题思路自己写的wrong代码错误原因:没考虑反转以后可能会超出整数限,程序鲁棒性不够class solution{public: int reverse(int x) { int res = 0; bool z =...原创 2019-11-24 23:49:38 · 144 阅读 · 0 评论 -
*leetcode-5-最长回文字串-medium
题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”解题思路之前面试时遇到过这个题,当时是百度的一个dp的思路,现在凭着脑海中的一点印象把代码写了出来,但是线上判题鸡很怪,我本地运行的没问题的...原创 2019-11-22 09:36:24 · 132 阅读 · 0 评论 -
*leetcode-4-寻找两个有序数组中的中位数-hard
问题描述给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是...原创 2019-11-20 09:22:34 · 91 阅读 · 0 评论 -
*leetcode-3-无重复字串的最长字串-medium
题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子...原创 2019-11-19 09:34:25 · 145 阅读 · 0 评论 -
*leetcode-5125-不相交的握手-hard
题目描述偶数 个人站成一个圆,总人数为 num_people 。每个人与除自己外的一个人握手,所以总共会有 num_people / 2 次握手。将握手的人之间连线,请你返回连线不会相交的握手方案数。由于结果可能会很大,请你返回答案 模 10^9+7 后的结果。问题详细点这里解题思路经典的卡特兰数问题卡特兰数的详细解析点这里class Solution {public: ...原创 2019-11-18 10:48:22 · 397 阅读 · 0 评论 -
*leetcode-5109-最小公共区域-medium
题目描述给你一些区域列表 regions ,每个列表的第一个区域都包含这个列表内所有其他区域。很自然地,如果区域 X 包含区域 Y ,那么区域 X 比区域 Y 大。给定两个区域 region1 和 region2 ,找到同时包含这两个区域的 最小 区域。如果区域列表中 r1 包含 r2 和 r3 ,那么数据保证 r2 不会包含 r3 。数据同样保证最小公共区域一定存在。示例 1:...原创 2019-11-18 09:20:30 · 136 阅读 · 0 评论 -
leetcode-2-两数相加-media
题目描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 ...原创 2019-11-15 10:37:00 · 128 阅读 · 0 评论 -
leetcode-1-两数之和-easy
题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解题思路...原创 2019-11-13 09:57:04 · 96 阅读 · 0 评论 -
*leetcode-313-超级丑数-medium
题目描述编写一段程序来查找第 n 个超级丑数。超级丑数是指其所有质因数都是长度为 k 的质数列表 primes 中的正整数。示例:输入: n = 12, primes = [2,7,13,19]输出: 32解释: 给定长度为 4 的质数列表 primes = [2,7,13,19],前 12 个超级丑数序列为:[1,2,4,7,8,13,14,16,19,26,28,32] 。说明:...原创 2019-11-12 08:54:30 · 108 阅读 · 0 评论 -
*leetcode-993-二叉树的堂兄弟节点-easy
题目描述如果二叉树的两个节点深度相同,但父节点不同,则它们是一对堂兄弟节点。我们给出了具有唯一值的二叉树的根节点 root,以及树中两个不同节点的值 x 和 y。只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true。否则,返回 false。解题思路一拿到题完全蒙蔽…我怕是个弱智看了题解,基本都是深度优先的思路下面这个是代码比较简单易懂的暴露自己的缺点是C++功底...原创 2019-11-11 09:22:02 · 125 阅读 · 0 评论 -
leetcode-874-模拟行走机器人-easy
题目描述机器人在一个无限大小的网格上行走,从点 (0, 0) 处开始出发,面向北方。该机器人可以接收以下三种类型的命令:-2:向左转 90 度-1:向右转 90 度1 <= x <= 9:向前移动 x 个单位长度在网格上有一些格子被视为障碍物。第 i 个障碍物位于网格点 (obstacles[i][0], obstacles[i][1])如果机器人试图走到障碍物上方,那...原创 2019-11-08 10:06:59 · 134 阅读 · 0 评论 -
leetcode-1-猜数字-easy
题目表述小A 和 小B 在玩猜数字。小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜。他们一共进行三次这个游戏,请返回 小A 猜对了几次?输入的guess数组为 小A 每次的猜测,answer数组为 小B 每次的选择。guess和answer的长度都等于3。示例 1:输入:guess = [1,2,3], answer = [1,2,3]输出:...原创 2019-11-08 09:16:30 · 143 阅读 · 0 评论 -
leetcode-190-颠倒二进制位-easy
题目描述颠倒给定的 32 位无符号整数的二进制位。示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,因此返回 964176192,其二进制表示形式为 00111...原创 2019-11-07 09:37:48 · 119 阅读 · 0 评论 -
leetcode-453-最小移动次数-easy
题目描述给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动可以使 n - 1 个元素增加 1。示例:输入:[1,2,3]输出:3解释:只需要3次移动(注意每次移动会增加两个元素的值):[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]来源:力扣(LeetCode)链接:https://...原创 2019-11-04 14:44:39 · 213 阅读 · 0 评论 -
*leetcode-991-坏了的计算器-medium
题目描述在显示着数字的坏计算器上,我们可以执行以下两种操作:双倍(Double):将显示屏上的数字乘 2;递减(Decrement):将显示屏上的数字减 1 。最初,计算器显示数字 X。返回显示数字 Y 所需的最小操作数。示例 1:输入:X = 2, Y = 3输出:2解释:先进行双倍运算,然后再进行递减运算 {2 -> 4 -> 3}.示例 2:输入:X ...原创 2019-11-02 14:08:40 · 151 阅读 · 0 评论 -
leetcode-275-H指数Ⅱ-medium
题目描述给定一位研究者论文被引用次数的数组(被引用次数是非负整数),数组已经按照升序排列。编写一个方法,计算出研究者的 h 指数。h 指数的定义: “h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)至多有 h 篇论文分别被引用了至少 h 次。(其余的 N - h 篇论文每篇被引用次数不多于 h 次。)"示例:输入: citat...原创 2019-11-01 10:00:35 · 102 阅读 · 0 评论 -
*leetcode-284-顶端迭代器-medium
题目描述给定一个迭代器类的接口,接口包含两个方法: next() 和 hasNext()。设计并实现一个支持 peek() 操作的顶端迭代器 – 其本质就是把原本应由 next() 方法返回的元素 peek() 出来。示例:假设迭代器被初始化为列表 [1,2,3]。调用 next() 返回 1,得到列表中的第一个元素。现在调用 peek() 返回 2,下一个元素。在此之后调用 next(...原创 2019-10-31 11:18:37 · 192 阅读 · 0 评论 -
leetcode-045-跳跃游戏2-hard
题目描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。解法笨比dp,T了,时间复杂度最坏为O(...原创 2019-10-29 10:02:32 · 241 阅读 · 0 评论 -
leetcode-393-UTF8编码验证-medium
题目描述:UTF-8 中的一个字符可能的长度为 1 到 4 字节,遵循以下的规则:对于 1 字节的字符,字节的第一位设为0,后面7位为这个符号的unicode码。对于 n 字节的字符 (n > 1),第一个字节的前 n 位都设为1,第 n+1 位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。这是 UTF-8 编码的工作方式:Cha...原创 2019-10-28 11:08:57 · 239 阅读 · 0 评论 -
leetcode-1002-查找常用字符-easy
题目描述:给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。你可以按任意顺序返回答案。输入:[“bella”,“label”,“roller”]输出:[“e”,“l”,“l”]解题思路一开始直接统计所有字串相同字母的个数然后...原创 2019-10-24 10:01:27 · 153 阅读 · 0 评论