![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
文章平均质量分 58
leetcode大白话解法
0x2FE17
这个作者很懒,什么都没留下…
展开
-
leetcode1590. 使数组和能被 P 整除
给你一个正整数数组nums,请你移除子数组(可以为),使得剩余元素的能被p整除。将整个数组都移除。请你返回你需要移除的最短子数组的长度,如果无法满足题目要求,返回-1。定义为原数组中连续的一组元素。1nums 中元素和为 10,不能被 p 整除。我们可以移除子数组 [4] ,剩余元素的和为 6。2我们无法移除任何一个元素使得和被 9 整除,最优方案是移除子数组 [5,2] ,剩余元素为 [6,3],和为 9。0和恰好为 6 ,已经能被 3 整除了。所以我们不需要移除任何元素。-1。原创 2023-03-11 02:09:34 · 166 阅读 · 0 评论 -
leetcode295.数据流的中位数
中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。例如 arr = [2,3,4] 的中位数是 3。例如 arr = [2,3] 的中位数是 (2 + 3) / 2 = 2.5。原创 2023-03-11 02:12:42 · 140 阅读 · 0 评论 -
leetcode289.生命游戏
根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 1 即为 活细胞 (live),或 0 即为 死细胞 (dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活;原创 2023-03-10 12:08:17 · 237 阅读 · 0 评论 -
leetcode10.正则表达式匹配
正则表达式匹配给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。示例 1:输入:s = "aa", p = "a"输出:false解释:"a" 无法匹配 "aa" 整个字符串。示例 2:输入:s = "aa", p = "a*"输出:true解释:因为 '*' 代表可以匹配零个或多个前面的那一个原创 2023-03-09 00:58:59 · 43 阅读 · 0 评论 -
leetcode4.寻找两个正序数组的中位数
寻找两个正序数组的中位数给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,原创 2023-03-08 23:00:48 · 38 阅读 · 0 评论 -
leetcode5.最长回文子串
最长回文子串给你一个字符串 s,找到 s 中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"最优解决方案有很多算法可以解决这个问题,但是其中最快的算法是Manacher(马拉车)算法,它的时间复杂度是 O(n),也就是说它只需要扫描一遍字符串就可以找到最长的回文子串。具体来说,Manache原创 2023-03-08 23:47:23 · 144 阅读 · 0 评论 -
leetcode8.字符串转换整数
字符串转换整数请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。 将前面步骤读入的这些原创 2023-03-09 00:39:36 · 42 阅读 · 0 评论 -
leetcode6.N字形变换
N字形变换将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:P A H NA P L S I I GY I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。最优解决方案根据给定的行数 numRows,创建一个列表,每个元素是一原创 2023-03-09 00:01:08 · 113 阅读 · 0 评论 -
leetcode3.无重复字符的最长子串
无重复字符的最长子串给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。最优解决方案滑动窗口法。就是用一个窗口(或者说一个区间)来表示当前不重复的子串,窗口的左边界是 start ,右边界是 i 。每次遇到一个新的字符,就把它放进窗口里,并记录它的位置。如果发现这个字符已经在窗口里出现过了,就说明这个子串不能再延长了,需要把窗口左边往右移动一点,直到把重复的字符排除在外。然后再计算一下这个窗口有多长,如果比之前记录的最长子串还要长,就更新一下最长子串的长度。这样一直遍历完整原创 2023-03-08 22:24:23 · 31 阅读 · 0 评论 -
leetcode7.整数反转
整数反转给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321最优解决方案去掉符号单独处理。使用一个变量来存储反转后的数字,然后每次从原始数字的末尾取出一位数字,反转后的数字乘以 10 并加上末尾数字。它必须原创 2023-03-09 00:22:48 · 43 阅读 · 0 评论 -
leetcode11.盛最多水的容器
盛最多水的容器给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例原创 2023-03-09 01:12:37 · 110 阅读 · 0 评论 -
leetcode1.两数之和
两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。最优解决方案创建一个空的哈希表(也叫字典),然后遍历数组中的每个元素,对于每个元素x,先计算target-x的值y,然后在哈希表中查找是否有y的键存在,如果存在,就说明找到了两个和为target的元素,返回它们的下标;如果不存在,就原创 2023-03-08 22:07:58 · 40 阅读 · 0 评论 -
leetcode2.两数相加
两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。最优解决方案就是像小学时候学习的竖式加法一样,从右往左依次相加每一位,并注意进位。只不过这里是用链表来表示数字,并且是逆序存储的。创建一个新的链表,用来存储两个链表相加的结果。 初始化两个指针,分别指向两个链表的头节点。 初始化一个进位标志 ca原创 2023-03-08 22:17:07 · 42 阅读 · 0 评论