
LeetCode
文章平均质量分 67
LeetCode刷题总结和一些周赛的小结
bughunter-
这个作者很懒,什么都没留下…
展开
-
LeetCode 240. 搜索二维矩阵 II
可以很容易想到,当数组中选取的数字小于要查找的数字,则根据该题二维数组的排序规则,我们要找的数字可能在当前选取位置的右边或者下边,同理,如果选取的数字大于要查找的数字,那么要查找的数字可能在当前选取位置的左边或者上边。在以上分析中,由于要查找的数字相对于选取位置有可能在两个区域中出现,并且这两个区域还存在重叠,所以单纯的用这个规律进行搜索似乎是不太可行的,并不能十分有效的提高搜索效率。时间复杂度为O(m+n),m为矩阵行数,n为矩阵列数。编写一个高效的算法来搜索。空间复杂度为O(1)。原创 2023-10-04 15:27:46 · 1217 阅读 · 0 评论 -
LeetCode 反转字符串中的单词 双指针
中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。如果字符串在你使用的编程语言中是一种可变数据类型,请尝试使用。反转后的字符串中不能存在前导空格和尾随空格。中使用至少一个空格将字符串中的。之间用单个空格连接的结果字符串。原地操作,双指针模拟,详见代码。是由非空格字符组成的字符串。原创 2023-09-25 17:25:54 · 163 阅读 · 0 评论 -
LeetCode 四数相加II 哈希
直接四重循环会超时,我们可以考虑将四个数组分成两组,nums1和nums2一组,nums3和nums4一组,先用两重循环将nums1和nums2所有相加和枚举出来并计数,用unordered_map计数(不需要用map,因为不需要有序,用map会浪费性能),然后再用两重循环枚举num3和num4的所有相加和,统计相反数的数量即可.原创 2023-09-22 15:47:53 · 242 阅读 · 0 评论 -
LeetCode 接雨水 双指针
由木桶理论可知某一列的储水量与他左边最高的柱子和右边最高的柱子之间的较矮者有关。在上一篇博客,我们使用了DP方法,维护了两个数组left和right,空间复杂度为O(n),但实际上我们可以使用双指针法,空间复杂度可以优化到O(1)。原创 2023-09-22 14:23:12 · 377 阅读 · 0 评论 -
LeetCode 接雨水 木桶理论、dp预处理
木桶理论,即每一列能够存储的水有关于左边最高的柱子和右边最高的柱子之间的较小者。 只要能够想到这一点,那么这题就不存在什么难度了。是一道较为简单的hard题。原创 2023-09-22 11:12:21 · 307 阅读 · 0 评论 -
LeetCode 盛最多水的容器 双指针
给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i, 0)和(i, height[i])。 找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。原创 2023-09-22 10:07:01 · 144 阅读 · 0 评论 -
LeetCode 最接近的三数之和 排序+双指针+剪枝优化
给你一个长度为n的整数数组nums和 一个目标值target。请你从nums中选出三个整数,使它们的和与target最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。原创 2023-09-22 09:12:34 · 187 阅读 · 0 评论 -
LeetCode 四数之和 排序+双指针+剪枝优化
给你一个由n个整数组成的数组nums,和一个目标值target。请你找出并返回满足下述全部条件且不重复的四元组[nums[a], nums[b], nums[c], nums[d]](若两个四元组元素一一对应,则认为两个四元组重复): 0原创 2023-09-20 18:23:38 · 243 阅读 · 0 评论 -
剑指 Offer 33. 二叉搜索树的后序遍历序列
众所周知,二叉搜索树的特点是:每个根节点的左子树节点的值全部小于等于根节点,右子树节点的值全部大于根节点;二叉树的后序遍历顺序是左子树、右子树、根节点。根据以上,我们可以通过递归,判断所有子树的正确性(即其后序遍历是否满足二叉搜索树的定义) ,若所有子树都正确,则此序列为二叉搜索树的后序遍历。原创 2023-09-20 16:23:28 · 121 阅读 · 0 评论 -
LeetCode 第 276 场周赛小结
1.将字符串拆分为若干长度为 k 的组 字符串 s 可以按下述步骤划分为若干长度为 k 的组: 第一组由字符串中的前 k 个字符组成,第二组由接下来的 k 个字符串组成,依此类推。每个字符都能够成为 某一个 组的一部分。 对于最后一组,如果字符串剩下的字符 不足 k 个,需使用字符 fill 来补全这一组字符。 注意,在去除最后一个组的填充字符 fill(如果存在的话)并按顺序连接所有的组后,所得到的字符串应该是 s 。 给你一个字符串 s ,以及每组的长度 k 和一个用于填充的字符 fill ..原创 2022-01-21 15:14:46 · 185 阅读 · 0 评论