LeetCode
文章平均质量分 53
遗忘的大城小事
这个作者很懒,什么都没留下…
展开
-
三种遍历方式构造二叉树
105. 从前序与中序遍历序列构造二叉树给定一棵树的前序遍历 preorder 与中序遍历 inorder。请构造二叉树并返回其根节点。解题思路:求出根结点的值 rootVal(先序遍历第一个)求出根结点在中序遍历的位置rootIndex(预先存储在map中)求出左子树的个数 leftNum = rootIndex - inStart中序遍历中,左子树:[inStart, rootIndex - 1], 右子树:[rootIndex + 1, inEnd]前序遍历中,左子树:[preSt原创 2021-08-22 16:43:42 · 265 阅读 · 0 评论 -
LeetCode-468. 验证IP地址
难度:中等编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址。如果是有效的 IPv4 地址,返回 “IPv4” ;如果是有效的 IPv6 地址,返回 “IPv6” ;如果不是上述类型的 IP 地址,返回 “Neither” 。IPv4 地址由十进制数和点来表示,每个地址包含 4 个十进制数,其范围为 0 - 255, 用(".")分割。比如,172.16.254.1;同时,IPv4 地址内的数不会以 0 开头。比如,地址 172.16.254.01 是不合法的。IPv6原创 2020-12-29 15:16:06 · 87 阅读 · 0 评论 -
LeetCode-874. 模拟行走机器人
难度:简单机器人在一个无限大小的网格上行走,从点 (0, 0) 处开始出发,面向北方。该机器人可以接收以下三种类型的命令:-2:向左转 90 度-1:向右转 90 度1 <= x <= 9:向前移动 x 个单位长度在网格上有一些格子被视为障碍物。第 i 个障碍物位于网格点 (obstacles[i][0],obstacles[i][1]obstacles[i][0], obstacles[i][1]obstacles[i][0],obstacles[i][1])机器人无法走到原创 2020-12-15 11:17:04 · 129 阅读 · 0 评论 -
LeetCode-611. 有效三角形的个数
难度:【中等】给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。示例 1:输入: [2,2,3,4]输出: 3解释:有效的组合是:2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,3注意:数组长度不超过1000。数组里整数的范围为 [0, 1000]。解题思路:首先对数组排序。固定最长的一条边,然后使用双指针 i 和 j 扫描剩余的元素,i指向数组头,j指向最长边的前一个元素。如果 nums[i] + nums[j原创 2020-11-11 20:09:16 · 263 阅读 · 0 评论 -
LeetCode-554. 砖墙
难度:【中等】你的面前有一堵矩形的、由多行砖块组成的砖墙。 这些砖块高度相同但是宽度不同。你现在要画一条自顶向下的、穿过最少砖块的垂线。砖墙由行的列表表示。 每一行都是一个代表从左至右每块砖的宽度的整数列表。如果你画的线只是从砖块的边缘经过,就不算穿过这块砖。你需要找出怎样画才能使这条线穿过的砖块数量最少,并且返回穿过的砖块数量。你不能沿着墙的两个垂直边缘之一画线,这样显然是没有穿过一块砖的。示例:输入: [[1,2,2,1],[3,1,2],[1,3,2],[2,4],[3,1,2]原创 2020-10-07 16:23:13 · 137 阅读 · 0 评论 -
LeetCode-599. 两个列表的最小索引总和
难度:简单假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设总是存在一个答案。示例:示例 1:输入:[“Shogun”, “Tapioca Express”, “Burger King”, “KFC”][“Piatti”, “The Grill at Torrey Pines”, “Hungry Hunter Ste原创 2020-10-07 15:22:53 · 193 阅读 · 0 评论 -
LeetCode-532. 数组中的 k-diff 数对
难度:【中等】给定一个整数数组和一个整数 k,你需要在数组里找到不同的 k-diff 数对。这里将 k-diff 数对定义为一个整数对 (i, j),其中 i 和 j 都是数组中的数字,且两数之差的绝对值是 k 。示例:示例 1:输入:[3, 1, 4, 1, 5], k = 2输出:2解释:数组中有两个 2-diff 数对, (1, 3) 和 (3, 5)。尽管数组中有两个1,但我们只应返回不同的数对的数量。示例 2:输入:[1, 2, 3, 4, 5], k = 1输出:4解释:原创 2020-10-03 20:05:37 · 87 阅读 · 0 评论 -
LeetCode-633. 平方数之和
难度:【中等】给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。示例:示例 1:输入:c = 5输出:true解释:1 * 1 + 2 * 2 = 5示例 2:输入:c = 3输出:false示例 3:输入:c = 4输出:true示例 4:输入:c = 2输出:true示例 5:输入:c = 1输出:true提示:0 <= c <= 231 - 1解题思路:双指针;先计算出某个平方数最接近目标数值的整原创 2020-10-02 20:19:24 · 188 阅读 · 0 评论 -
LeetCode-71. 简化路径
难度:【中等】以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最短字符串原创 2020-09-22 17:06:11 · 88 阅读 · 0 评论 -
LeetCode-539. 最小时间差
难度:中等给定一个 24 小时制(小时:分钟)的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。示例 1:输入: [“23:59”,“00:00”]输出: 1备注:列表中时间数在 2~20000 之间。每个时间取值在 00:00~23:59 之间。解题思路:将所有时间点转化为分钟数,由于分钟数最多为24*60,所以我们将其映射到一个大小为1440的数组中进行求解,数组中存储 该位置索引对应的分钟数 所出现的次数,若存在大于1的情况,则最小时间差必为0。之后,按照顺序求解相原创 2020-09-09 15:13:57 · 226 阅读 · 0 评论 -
LeetCode-598. 范围求和 II
难度:【简单】给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作。操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义是将所有符合 0 <= i < a 以及 0 <= j < b 的元素 M[i][j] 的值都增加 1。在执行给定的一系列操作后,你需要返回矩阵中含有最大整数的元素个数。示例:示例 1:输入:m = 3, n = 3operations = [[2,2],[3,3]]输出: 4解原创 2020-08-27 22:59:01 · 121 阅读 · 0 评论 -
LeetCode-129. 求根到叶子节点数字之和
难度:【中等】给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例:示例 1:输入: [1,2,3]1/ 2 3输出: 25解释:从根到叶子节点路径 1->2 代表数字 12.从根到叶子节点路径 1->3 代表数字 13.因此,数字总和 = 12 + 13 = 25.原创 2020-08-17 15:31:00 · 109 阅读 · 0 评论 -
LeetCode -48. 旋转图像
难度:【中等】给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例:示例 1:给定 matrix =[[1,2,3],[4,5,6],[7,8,9]],原地旋转输入矩阵,使其变为:[[7,4,1],[8,5,2],[9,6,3]]示例 2:给定 matrix =[[ 5, 1, 9,11],[ 2, 4, 8,10],[13, 3, 6原创 2020-08-10 15:54:03 · 109 阅读 · 0 评论 -
LeetCode-213. 打家劫舍 II
难度:【中等】你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例:示例 1:输入: [2,3,2]输出: 3解释: 你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是原创 2020-08-05 10:32:02 · 115 阅读 · 0 评论 -
LeetCode-415. 字符串相加
难度:简单给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。注意:num1 和num2 的长度都小于 5100.num1 和num2 都只包含数字 0-9.num1 和num2 都不包含任何前导零。你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。解题思路:设定 i,j 两指针分别指向 num1,num2 尾部,模拟人工加法;计算进位: 计算 carry = sum/10,代表当前位相加是否产生进位;添加当前位: 计原创 2020-08-03 09:20:01 · 92 阅读 · 0 评论 -
LeetCode-114. 二叉树展开为链表
难度:【中等】给定一个二叉树,原地将它展开为一个单链表。示例:例如,给定二叉树 1 / \ 2 5 / \ \3 4 6将其展开为:1 \ 2 \ 3 \ 4 \ 5 \ 6解题思路:对于当前节点,如果其左子节点不为空,则在其左子树中找到最右边的节点,作为前驱节点,将当前节点的右子节点赋给前驱节点的右子节点,然后将当前节点的左子节点赋给当前节点原创 2020-08-02 09:56:06 · 100 阅读 · 0 评论 -
LeetCode-725. 分隔链表
难度:【中等】给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。返回一个符合上述规则的链表的列表。举例: 1->2->3->4, k = 5 // 5 结果 [ [1], [2], [3], [4], null ]示例:示例 1:输入:root原创 2020-07-28 09:00:51 · 81 阅读 · 0 评论 -
LeetCode-61. 旋转链表
难度:【中等】给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例:示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2->3->NULL示例 2:输入: 0->1原创 2020-07-27 22:15:32 · 78 阅读 · 0 评论 -
LeetCode-16. 最接近的三数之和
难度:【中等】给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示:3<=nums.length<=1033 <= nums.length <= 10^33<=num原创 2020-07-20 10:39:21 · 86 阅读 · 0 评论 -
LeetCode-63. 不同路径 II
题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 :输入:[[0,0,0],[0,1,0],[0,0,0]]输出: 2解释:3x3 网格的正中间有一个障碍物。从左上角到右下原创 2020-07-06 22:43:11 · 82 阅读 · 0 评论 -
LeetCode-62. 不同路径
题目:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例:示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向右 -> 向下向右 -> 向下 -> 向右向下 -&原创 2020-07-06 22:40:23 · 110 阅读 · 0 评论 -
LeetCode-718. 最长重复子数组
题目给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。示例:输入:A: [1,2,3,2,1]B: [3,2,1,4,7]输出:3解释:长度最长的公共子数组是 [3, 2, 1] 。提示:1 <= len(A), len(B) <= 10000 <= A[i], B[i] < 100思路【动态规划】:第 1 步:定义状态dp[i][j] 的含义是:对于 A[1..i] 和 B[1..j],它们的 最长重复子数组 长度是 dp[i原创 2020-07-01 23:08:29 · 138 阅读 · 0 评论 -
LeetCode-297. 二叉树的序列化与反序列化
题目:序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例:你可以将以下二叉树: 1 / \ 2 3 / \ 4 5序列化为 “[1,2,3,null,原创 2020-06-16 15:35:42 · 109 阅读 · 0 评论 -
LeetCode-993. 二叉树的堂兄弟节点
题目在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。如果二叉树的两个节点深度相同,但父节点不同,则它们是一对堂兄弟节点。我们给出了具有唯一值的二叉树的根节点 root,以及树中两个不同节点的值 x 和 y。只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true。否则,返回 false。示例示例 1:输入:root = [1,2,3,4], x = 4, y = 3输出:false示例 2:输入:root = [1,2,3,nul原创 2020-06-07 16:58:39 · 125 阅读 · 0 评论 -
LeetCode-153. 寻找旋转排序数组中的最小值
题目假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0解题思路思想:二分搜索如果中值 < 右值,则最小值在左半边,可以收缩右边界。如果中值 >= 右值,则最小值在右半边,可以收缩左边界。如果两原创 2020-06-05 21:49:53 · 94 阅读 · 0 评论 -
LeetCode-59. 螺旋矩阵 II
题目:给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]解题思路:设置这样四个变量:a:左上角,往数组右边走(行),b:左上角,往数组下边走(列),c:右下角,往数组上边走(行),d:右下角,往数组左边走(列),这样就形成了一个矩形先遍历a行b到d-1列,然后遍历d列a到c-1行,然后是c行d到b-1列,最后是b列c到a-1行,原创 2020-06-05 21:22:50 · 139 阅读 · 0 评论 -
Leetcode-54. 螺旋矩阵
题目给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]输出: [1,2,3,4,8,12,11,10,9,5,6,7]解题思路以一个整体的思想去看待这个问题,可以设置这样四原创 2020-06-05 19:53:09 · 80 阅读 · 0 评论 -
LeetCode-220. 存在重复元素 III
题目给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。示例示例 1:输入: nums = [1,2,3,1], k = 3, t = 0输出: true示例 2:输入: nums = [1,0,1,1], k = 1, t = 2输出: true示例 3:输入: nums = [1,5,9,1,5,9], k = 2, t = 3输出: false原创 2020-06-04 10:30:13 · 86 阅读 · 0 评论 -
LeetCode-217. 存在重复元素
题目给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true思路1:排序+比较先排序,再比较元素代码实现:class Solution { public boolean conta原创 2020-06-04 10:02:19 · 86 阅读 · 0 评论 -
LeetCode-110. 平衡二叉树
题目给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \ 3 3 /原创 2020-06-02 22:31:49 · 100 阅读 · 0 评论 -
LeetCode-面试题54. 二叉搜索树的第k大节点
题目给定一棵二叉搜索树,请找出其中第k大的节点。示例示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 4示例 2:输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1输出: 4限制:1 ≤ k ≤ 二叉搜索树元素个数解题思路:二叉搜索树中序遍历是升序的,所有原创 2020-06-02 21:44:59 · 98 阅读 · 0 评论 -
LeetCode-143. 重排链表
题目给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例示例 1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4->5, 重新排列为 1->5->2->4->3.解题思路1:遍历链表求表长,然后申请原创 2020-05-31 12:16:24 · 327 阅读 · 0 评论 -
LeetCode-24. 两两交换链表中的节点
题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例给定 1->2->3->4, 你应该返回 2->1->4->3.解题思路使用三个结点,pre,cur,next分别表示当前结点前一结点,当前结点,当前结点后一结点完成交换。先定位到要交换的两个结点,再修改指针指向完成交换更新结点的位置,继续进行下一组结点的交换直到遍历完整个链表,返回交换后链表的头结点即可代码实现原创 2020-05-31 10:19:24 · 80 阅读 · 0 评论 -
LeetCode-287. 寻找重复数
题目:给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例:示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n2) 。数组中只有一个重复的数字,但它可能不止重复出现一次。解题思路:思想:二分法依据原创 2020-05-26 22:37:14 · 103 阅读 · 0 评论 -
LeetCode-146. LRU缓存机制
题目:运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥已经存在,则变更其数据值;如果密钥不存在,则插入该组「密钥/数据值」。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为新的数据值留出空间。进阶:你是否可以在 O(原创 2020-05-25 23:38:48 · 89 阅读 · 0 评论 -
LeetCode-106. 从中序与后序遍历序列构造二叉树
题目根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。示例例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7解题思路1.求结点的个数2.根据后序遍历求根结点(最后一个)3.在中序遍历中找到根结点4.以根结点为中心把结点分别存入左右子树5.左右子树递归遍历建立二叉树代码实原创 2020-05-22 21:37:54 · 96 阅读 · 0 评论 -
LeetCode-105. 从前序与中序遍历序列构造二叉树
题目根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。示例例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7解题思路1.求结点的个数2.根据前序遍历求根结点(第一个)3.在中序遍历中找到根结点4.以根结点为中心把结点分别存入左右子树5.左右子树递归遍历建立二叉树代码实现c原创 2020-05-22 21:34:20 · 109 阅读 · 0 评论 -
LeetCode-125. 验证回文串
题目给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false解题思路设置两个指针分别指向字符串首尾;遍历字符串,如果当前字符不是字母或数字字符,则直接跳过;再比较两字符串对应的字符是否相等,不等直接返回false;直到遍历完整个字符串,则原创 2020-05-20 00:01:59 · 88 阅读 · 0 评论 -
LeetCode-680. 验证回文字符串 Ⅱ
题目给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。示例示例 1:输入: “aba”输出: True示例 2:输入: “abca”输出: True解释: 你可以删除c字符。注意:字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。解题思路:1.初始化两个指针 left和 right分别指向字符串的第一个字符和最后一个字符。2.遍历字符串,每次判断两个指针指向的字符是否相同。(1)如果相同,则更新指针,令 left= left+ 1 和原创 2020-05-19 23:25:50 · 107 阅读 · 0 评论 -
LeetCode-152. 乘积最大子数组
题目给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。解题思路思想:动态规划遍历整个数组,计算当前最大值和最小值当出现负数时,最大值需要和最小值交换(因为负数会使最大值变小,最小值变大)每次遍历原创 2020-05-18 21:49:03 · 76 阅读 · 0 评论