![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
双指针
枫流仁武
这个作者很懒,什么都没留下…
展开
-
LeetCode 面试题17.21 直方图的水量
给定一个直方图(也称柱状图),假设有人从上面源源不断地倒水,最后直方图能存多少水量?直方图的宽度为 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]输出: 6class Solution {public: int trap(vector<int>& height) { .原创 2021-04-02 08:39:24 · 96 阅读 · 0 评论 -
LeetCode 1658 将x减到0最小操作数
给你一个整数数组 nums 和一个整数 x 。每一次操作时,你应当移除数组 nums 最左边或最右边的元素,然后从 x 中减去该元素的值。请注意,需要 修改 数组以供接下来的操作使用。如果可以将 x恰好 减到0 ,返回 最小操作数 ;否则,返回 -1 。示例 1:输入:nums = [1,1,4,2,3], x = 5输出:2解释:最佳解决方案是移除后两个元素,将 x 减到 0 。示例 2:输入:nums = [5,6,7,8,9], x = 4输出:-1示例 3:输...原创 2021-02-25 10:08:39 · 175 阅读 · 0 评论 -
LeetCode 1438 绝对差不超过限制的最长连续子数组
给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。如果不存在满足条件的子数组,则返回 0 。示例 1:输入:nums = [8,2,4,7], limit = 4输出:2解释:所有子数组如下:[8] 最大绝对差 |8-8| = 0 <= 4.[8,2] 最大绝对差 |8-2| = 6 > 4.[8,2,4] 最大绝对差 |8-2| = 6 > 4....原创 2021-02-21 14:45:09 · 107 阅读 · 0 评论 -
LeetCode 925 长按键入
你的朋友正在使用键盘输入他的名字name。偶尔,在键入字符c时,按键可能会被长按,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回True。我的解法:class Solution: def isLongPressedName(self, name: str, typed: str) -> bool: list1 = self.helper(name) ...原创 2020-10-21 07:31:17 · 81 阅读 · 0 评论 -
LeetCode 75 颜色分类
给定一个包含红色、白色和蓝色,一共n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。双指针法,中轴排序也用到了同样的方法。from typing import *class Solution: def sortColors(self, nums: List[int]) -> None: """ Do not return anyth..原创 2020-10-07 08:50:00 · 90 阅读 · 0 评论 -
LeetCode LCP19 秋叶收藏集
小扣出去秋游,途中收集了一些红叶和黄叶,他利用这些叶子初步整理了一份秋叶收藏集 leaves, 字符串 leaves 仅包含小写字符 r 和 y, 其中字符 r 表示一片红叶,字符 y 表示一片黄叶。出于美观整齐的考虑,小扣想要将收藏集中树叶的排列调整成「红、黄、红」三部分。每部分树叶数量可以不相等,但均需大于等于 1。每次调整操作,小扣可以将一片红叶替换成黄叶或者将一片黄叶替换成红叶。请问小扣最少需要多少次调整操作才能将秋叶收藏集调整完毕。首先求得y和r的前缀和。在字符串的过程中有两个指针,一个原创 2020-10-01 08:18:15 · 82 阅读 · 0 评论 -
LeetCode 719 找出第k小距离对
给定一个整数数组,返回所有数对之间的第 k 个最小距离。一对 (A, B) 的距离被定义为 A 和 B 之间的绝对差值。二分查找和双指针。from typing import *class Solution: def smallestDistancePair(self, nums: List[int], k: int) -> int: nums.sort() max_val = nums[-1] - nums[0] min_val原创 2020-09-12 17:40:37 · 96 阅读 · 0 评论 -
LeetCode 1498 满足条件的子序列数目
给你一个整数数组 nums 和一个整数 target 。请你统计并返回 nums 中能满足其最小元素与最大元素的 和 小于或等于 target 的 非空 子序列的数目。由于答案可能很大,请将结果对 10^9 + 7 取余后返回。首先将数组排序,因为该题处理子序列过程只是计数,和顺序无关。class Solution: def numSubseq(self, nums: List[int], target: int) -> int: mod=int(10**9+原创 2020-07-03 18:03:01 · 137 阅读 · 0 评论 -
LeetCode 209 长度最小的子数组
双指针法from typing import *import sysclass Solution: def minSubArrayLen(self, s: int, nums: List[int]) -> int: i=0 tem_sum=0 min_len=sys.maxsize for j in range(len(nums)): tem_sum+=nums[j] wh原创 2020-06-28 09:20:58 · 56 阅读 · 0 评论 -
LeetCode 1014 最佳观光组合
第一种方法:找到每个下标元素右边第一个更大的元素的下标,这一步利用栈来实现。第二种方法,拆分成。import sysclass Solution: def maxScoreSightseeingPair(self, A: List[int]) -> int: dic1 = {} stack = [] for i, val in enumerate(A): while stack and A[stack[-1原创 2020-06-17 16:13:25 · 86 阅读 · 0 评论 -
LeetCode 15 三数之和
给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。这种题第一步基本上都是先排序。遍历数组,双指针。注意要去重import sysclass Solution: def threeSum(self, nums: List[int]) -> List[List[int]]: nums.sort() ...原创 2020-06-14 20:18:40 · 76 阅读 · 0 评论