LeetCodes解题
刷题鸭
lifecookies
这个作者很懒,什么都没留下…
展开
-
【LeetCode】7. 整数反转
7. 整数反转给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0提示:-231 <= x <= 231 - 1由原创 2021-01-21 20:12:39 · 99 阅读 · 1 评论 -
【LeetCode】5. 最长回文子串
暴力。暴力的思路就是对于每一个划分都去判断这是不是一个回文。这每一个划分的依据是无脑暴力n的平方复杂度,判断也需要n的复杂度,这就是n的三次方的复杂度。想到可以用动态规划,因为回文的中间任然是回文,这就减少了划分。动态规划的形式也是比较特别,we call it 区间型。...原创 2021-01-20 20:10:56 · 75 阅读 · 0 评论 -
【LeetCode】3.最长无重复字串 暴力和双指针
3.最长无重复字串首先想到的是暴力解法,对于每一个字符以他为首开始遍历,直至遇到和已经遍历的字符集中相同的字符则停止遍历,更新答案。判断是否相同可以用哈希表来判断优化:不需要从第下一个开始遍历,会有很多不需要的比较。只需要从重复字符的下一个字符开始遍历即可,那么就需要维护一个左边届,这个左边届改变的时候是随着遇到了重复的字符 哈希表出库的过程。代码//1228 滑动窗口 移动左边届直到哈希表里不存在重复元素class Solution {public: int lengthOfL原创 2021-01-15 17:53:09 · 84 阅读 · 0 评论 -
【LeetCode】构造二叉树
构造二叉树有两种办法前序+中序后序+中序这两种方法的思路是相同的,都是用前序(第一个元素)或者后序(最后一个元素)来对中序数组进行划分成左右数组,再根据划分的中序数组的大小来划分前序/后序数组。由于需要不断的进行划分,我们首先想到的是递归的办法递归的返回值一定是TreeNode型的,因为需要根据新建的结点构建二叉树;递归的参数列表有对数组的引用,有前序/后序的起始和终止,有中序的起止和终止;递归的主体部分是对数组的划分;再进行root->left和root->right 的递原创 2020-10-12 09:10:11 · 505 阅读 · 0 评论 -
【LeetCode】261. Graph Valid Tree(判断图是否为树)
Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is a pair of nodes), write a function to check whether these edges make up a valid tree.For example:Given n = 5 and edges = [[0, 1], [0, 2], [0, 3], [1, 4]], return true.原创 2020-10-10 20:11:17 · 541 阅读 · 0 评论 -
【LeetCode】二叉树的路径问题(所有路径,路径之和)
路径问题涉及回溯回溯一般和递归捆绑在一起一般递归函数为void型参数有结点,结果类型的一个遍历变量,(如果需要存放路径)定义一个容器存放函数体首先第一步把结点值放入遍历变量中,然后判断是否是叶结点,是则进行相应处理,并且return;如果不是则递归(遍历变量还是path,函数中处理),并且回溯;迭代法中的回溯一般使用两个栈来模拟一个栈用来遍历二叉树;一个栈用来模拟递归用来存放和当前结点对应的已经遍历的路径;同时pop更新,同时压入栈(结点,当前路径(注意会改变变量的情况,设置.原创 2020-10-06 16:03:04 · 3311 阅读 · 1 评论 -
【LeetCode】二叉树的深度(最大深度,最小深度, 完全二叉树的节点个数,平衡二叉树)
前序遍历和后序遍历的代码区别前序的递归函数的 返回值为空;参数部分含有结果值;return;后续的递归函数的 返回值为求值的类型; 参数部分不含有结构值; return 类型+1;104. 二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大原创 2020-10-05 22:20:29 · 1577 阅读 · 0 评论 -
【LeetCode】对称二叉树,相同的数
二叉树的题目都有两种解法,一种递归法,一般配合着回溯,一种迭代法,配合着栈和队列101. 对称二叉树给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [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递归法思路:比较两个子树是否相同,子树的比较分为内侧和外侧,结果原创 2020-10-05 20:57:25 · 486 阅读 · 0 评论 -
【LeetCode】二叉树遍历总结 前中后层序
二叉树的遍历分为深度优先遍历和广度优先遍历,深度优先要求先进后出,因此使用栈,广度优先搜索要求先进后出,因此使用队列。深度优先遍历分为前后中序遍历。三种顺序都有递归和迭代两种方法。迭代就是用栈模拟递归。遍历顺序前序中左右中序左中右后序左右中层序从左到右1 层序模板struct TreeNode{int val;TreeNode* left;TreeNode* right;TreeNode(int x):val(x),left(NULL),r原创 2020-09-26 16:36:12 · 135 阅读 · 0 评论 -
【LeetCode】五道题搞懂二叉树层序遍历
102. 二叉树的层序遍历102. 二叉树的层序遍历给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]/** * Definition for a binary tree node. * struct TreeNode {原创 2020-09-26 10:32:20 · 118 阅读 · 0 评论 -
【LeetCode】347.前K高频元素 优先队列 前K问题
347. 前 K 个高频元素347. 前 K 个高频元素给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1] 提示:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。题目数据保证答案唯一,换句话说,数组中前 k 个高频原创 2020-09-18 11:01:29 · 109 阅读 · 0 评论 -
【LeetCode】栈合集 单调栈合集 84. 柱状图中最大的矩形 239. 滑动窗口最大值 28. 实现 strStr() 150. 逆波兰表达式求值 232. 用栈实现队列 581. 最短无序
232. 用栈实现队列使用栈实现队列的下列操作:push(x) -- 将一个元素放入队列的尾部。pop() -- 从队列首部移除元素。peek() -- 返回队列首部的元素。empty() -- 返回队列是否为空。 示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); // 返回 false原创 2020-09-16 21:38:53 · 178 阅读 · 0 评论 -
【LeetCode】字符串合集
对于直接就能使用库函数解决的问题就好不要使用,锻炼自己的编程能力344. 反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2:输入:["H","a","n"原创 2020-09-09 11:06:07 · 118 阅读 · 0 评论 -
【leetcode】一看就会一写就废的递归解题合集
老师,写递归函数的时候,是按照伪代码一步一步翻译成代码么?这样就行了吗?真的是不能细想,一想就会迷惑这程序为什么要这样写[笑哭][笑哭]递归可以看成是一种新的思维方式,必须要尽量理解,以后学数据结构会大量使用的。用“自然语言”实现代码就是递归的魅力,习惯了这种编程方式就好了。111. 二叉树的最小深度给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,.原创 2020-09-07 08:09:36 · 287 阅读 · 0 评论 -
【C++学习】11章.关联容器 map set
关联容器支持高效的关键字查找和访问两个主要的关联容器是map和setmap中的元素是关键字-值(key-value)对:关键字起到索引的作用,值则表示与索引相关联的数据。set中每个元素只包含一个关键字:set支持高效的关键字查询工作——检测一个给定关键字是否在set中。标准库提供8个关联容器按关键字保存有序元素map关联数组:保存关键字-值对set关键字即值,即只保存关键字的容器multimap关键字可重复出现的mapmultiset关键字可重复原创 2020-09-05 16:49:38 · 216 阅读 · 0 评论 -
【LeetCode】哈希表合集
当需要判断一个元素是否出现过的时候,就考虑哈希表1. 哈希表的本质是空间换时间,通过数组,set,map将数据已经预处理2. set的限制是只能存放单一key,不能记录更多的数据3. 进而考虑map,map通过<key,value>的存储数据,允许我们更加灵活的存储哈希值和对应的数值383. 赎金信383. 赎金信给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果原创 2020-09-06 14:50:35 · 171 阅读 · 0 评论 -
【LeetCode】二分法合集
74. 搜索二维矩阵编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]target = 3输出: true示例 2:输入:matrix = [ [1, 3, 5, 7], [10, 11, 16, 2原创 2020-09-04 22:25:55 · 211 阅读 · 0 评论 -
【LeetCode】206. 反转链表 递归/迭代/双指针的方法 据说这一题可以卡掉80%的候选人
206. 反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?递归就是对双指针的方法进行改写 是一个思想说是双指针 其实是三指针 第三个指针保存着断了连接的后序链表首地址cur指针指向当前需要掉换方向的结点 pre指针指向cur即将指向的那个前结点pre初始化为NULL,cur初始化为head原创 2020-09-04 21:49:32 · 83 阅读 · 0 评论 -
【leetcode】26,80删除数组中重复的元素 快慢指针
数组的特点决定了删除一个元素必须遍历和覆盖覆盖的方法最快的就是快慢指针快慢指针的原理就是起始相同,指向同一个值比较快指针当前指向的值和前一个值比较的值不相同时快慢指针同时移动遇到相同的元素则向前移动快指针当快指针所指向的值不和前值相同满足条件时,慢指针和快指针之间的值将会被忽略并且被快指针的值覆盖知道快指针到达数组结尾7. 删除排序数组中的重复项给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须原创 2020-09-04 21:33:25 · 226 阅读 · 0 评论 -
【Leetcode】144.二叉树的前中后序遍历 递归法 迭代法
这道题掌握了基本概念后,代码很简单,但是一般大厂面试标明了只接受非递归法迭代法解释三种解法C++迭代法首先分享一个图示法快速写出三种遍历的方法任何算法的递归版本都可以改成非递归版本,因为函数递归调用其实质就是压栈的过程,那么我们完全可以使用堆栈来模拟这个过程。二叉树的遍历(递归法)很容易实现,本质是采用了栈帧的实现方式,函数调用就是压栈,函数求解就是出栈的过程,那么我们完全可以手动创建栈来模拟这个过程,按照指定遍历顺序迭代的访问二叉树的所有结点。因为前序、中序、后序三种遍历方式在当前函数体内原创 2020-08-30 16:28:12 · 139 阅读 · 0 评论 -
【leetCode】709. 转换成小写字母(for auto 的使用 tolower的使用)
709. 转换成小写字母实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。 示例 1:输入: "Hello"输出: "hello"示例 2:输入: "here"输出: "here"示例 3:输入: "LOVELY"输出: "lovely"通过次数51,597提交次数68,090class Solution {public: string toLowerCase(string s原创 2020-08-24 19:30:55 · 127 阅读 · 0 评论 -
【leetCode】21. 合并两个有序链表【链表】
21. 合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4通过次数283,241提交次数451,760链表 Java的一些写法listnode表示当前链表的头节点 也可表示整个链表ListNode.next 表示下一个节点的地址 ListNode.val 表示当前节点的指if(ListN原创 2020-06-08 00:19:01 · 161 阅读 · 0 评论 -
【LeetCode】19. 删除链表的倒数第N个节点 【链表】
19. 删除链表的倒数第N个节点给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?两次遍历法 先遍历出链表的长度 然后遍历出倒数第几个链表再删除/** * Definition for singly-linked list. * pu原创 2020-06-07 22:27:53 · 96 阅读 · 0 评论 -
【leetCode】59. 螺旋矩阵 II
59. 螺旋矩阵 II给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]通过次数35,811提交次数46,227同《螺旋矩阵》 不同的是这一题是赋值 上一题是读取再存入class Solution {public: vector<vector<int>> generateMatrix(int n)原创 2020-06-07 10:14:12 · 116 阅读 · 0 评论 -
【LeetCode】128. 最长连续序列 哈希表
128. 最长连续序列给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。通过次数46,036提交次数92,911 哈希表class Solution {public: int longestConsecutive(vector<int>& nums) { unordered_原创 2020-06-07 09:25:40 · 138 阅读 · 0 评论 -
【LeetCode】54. 螺旋矩阵 不用记录所走路径而是需要判断当前方向结束后是否还可以继续
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]通过次数62,020提交次数153,原创 2020-06-06 10:45:17 · 89 阅读 · 0 评论 -
【LeetCode】20. 有效的括号【栈的使用】
20. 有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输入: "([)]"输出: false示例 5:输入: "{[]}"输出: true原创 2020-06-05 16:11:30 · 99 阅读 · 0 评论 -
【LeetCode】17. 电话号码的字母组合 回溯算法 递归。暂时不会?
17. 电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。通过次数116,663提交次数217,708...原创 2020-06-02 21:41:16 · 119 阅读 · 0 评论 -
【LeetCode】18. 四数之和
18. 四数之和给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2,原创 2020-06-02 13:00:02 · 212 阅读 · 0 评论 -
【LeetCode】面试题64. 求1+2+…+n 数组 递归
面试题64. 求1+2+…+n求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 示例 1:输入: n = 3输出: 6示例 2:输入: n = 9输出: 45 限制:1 <= n <= 10000通过次数30,554提交次数35,602数组class Solution {public: int sumNums(int n) { bool原创 2020-06-02 12:21:03 · 186 阅读 · 0 评论 -
【Leetcode】16. 最接近的三数之和 双指针的思想
16. 最接近的三数之和给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).通过次数103,935提交次数235,646class Solution {public: int threeSu原创 2020-06-02 10:27:30 · 108 阅读 · 0 评论 -
【LeetCode】两数之和(暴力+哈希), 三数之和 关键在去重,四数之和
15. 三数之和给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]通过次数227,526提交次数838,188无法去重class Solution {public: v原创 2020-06-02 09:26:57 · 198 阅读 · 0 评论 -
【LeetCode】28. 实现 strStr() KMP easy
28. 实现 strStr()实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", needle = "bba"输出: -1说明:当 needle 是空字符串时,我们应当返回什么值呢原创 2020-06-01 12:44:42 · 89 阅读 · 0 评论 -
【LeetCode】27. 移除元素行 先排序再把val值的个数统计 最后把数组向前移动val个数个值
27. 移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,1,2,原创 2020-06-01 09:27:17 · 117 阅读 · 0 评论 -
【LeetCode】26. 删除排序数组中的重复项 双指针
26. 删除排序数组中的重复项给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新原创 2020-05-31 20:02:30 · 113 阅读 · 0 评论 -
【LeetCode】1051. 高度检查器 C++sort 排序的使用
1051. 高度检查器学校在拍年度纪念照时,一般要求学生按照 非递减 的高度顺序排列。请你返回能让所有学生以 非递减 高度排列的最小必要移动人数。注意,当一组学生被选中时,他们之间可以以任何可能的方式重新排序,而未被选中的学生应该保持不动。 示例:输入:heights = [1,1,4,2,1,3]输出:3 解释:当前数组:[1,1,4,2,1,3]目标数组:[1,1,1,2,3,4]在下标 2 处(从 0 开始计数)出现 4 vs 1 ,所以我们必须移动这名学生。在下标原创 2020-05-29 10:03:40 · 398 阅读 · 0 评论 -
【LeetCode】151. 翻转字符串里的单词 python,C++stringstream,先翻转整体再反转局部
151. 翻转字符串里的单词给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: "the sky is blue"输出: "blue is sky the"示例 2:输入: " hello world! "输出: "world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括示例 3:输入: "a good example"输出: "example good a"解释: 如果两个单词间有多余的空格,将反转后单词间的空格减原创 2020-05-29 09:32:09 · 256 阅读 · 0 评论 -
【LeetCode】面试题 01.02. 判定是否互为字符重排 比较总和
面试题 01.02. 判定是否互为字符重排给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。示例 1:输入: s1 = "abc", s2 = "bca"输出: true 示例 2:输入: s1 = "abc", s2 = "bad"输出: false说明:0 <= len(s1) <= 1000 <= len(s2) <= 100比较总和class Solution {public:原创 2020-05-28 21:44:01 · 175 阅读 · 0 评论 -
【LeetCode】14. 最长公共前缀 水平比较
14. 最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。暴力法class Solution {public: string longestCommonPrefix(vector<原创 2020-05-28 10:20:08 · 113 阅读 · 0 评论 -
【LeetCode】42. 接雨水 暴力法,动态规划
42. 接雨水给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6暴力法 会超出时间对于数组中的每一个数求出这个数需要接水的量接水的量等于此数左右最大值中的最小值 减去当前数字对于首尾两个数直接原创 2020-05-27 09:23:12 · 236 阅读 · 0 评论