LeetCode刷题系列
文章平均质量分 95
带大家一起刷完leetcode所有算法题、剑指offer题
极客城邦-逍遥云
开拓进取,勇于创新,发扬极客精神
展开
-
LeetCode 滑动窗口总结
说起滑动窗口算法,很多读者都会头疼。这个算法技巧的思路非常简单,就是维护一个窗口,不断滑动,然后更新答案么。LeetCode 上有起码 10 道运用滑动窗口算法的题目,难度都是中等和困难。该算法的大致逻辑如下:int left = 0, right = 0;while (right < s.size()) { // 增大窗口 window.add(s[right]); right++; whil转载 2022-01-29 23:41:20 · 409 阅读 · 1 评论 -
leetCode 二分查找方法总结
本文就来探究几个最常用的二分查找场景:寻找一个数、寻找左侧边界、寻找右侧边界。而且,我们就是要深入细节,比如不等号是否应该带等号,mid 是否应该加一等等。以问答的形式,分析这些细节的差异以及出现这些差异的原因,保证你能灵活准确地写出正确的二分查找算法。目录二分查找框架寻找一个数(基本的二分搜索)寻找左侧边界的二分搜索寻找右侧边界的二分查找逻辑统一二分查找框架int binarySearch(int[] nums, int target)转载 2022-01-08 23:17:23 · 578 阅读 · 0 评论 -
LeetCode 算法系列:第 46 ~50题
目录全排列全排列 II旋转图像字母异位词分组Pow(x, n)46. 全排列题目描述给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2],[3,2,1] ]思路:(回溯) O(n×n!) 我们从前往后,一位一位枚举,每次选择一个没有被使用过的数。选好之后,将该数的状态改成“已被使用”,同时将该数记录在相应位置上,然后递归原创 2020-09-22 21:04:41 · 173 阅读 · 0 评论 -
LeetCode 算法系列:第 41 ~ 45题
目录缺失的第一个正数接雨水字符串相乘通配符匹配跳跃游戏 II41. 缺失的第一个正数给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0] 输出: 3示例 2:输入: [3,4,-1,1] 输出: 2示例 3:输入: [7,8,9,11,12] 输出: 1思路:将所有的数用map存起来,然后从1依次开始找没有出现在map中的最小的正整数...原创 2020-09-20 19:57:25 · 174 阅读 · 0 评论 -
LeetCode 算法系列:第 36 ~ 40题
目录36. 有效的数独37. 解数独38. 外观数列39. 组合总和40. 组合总和 II36. 有效的数独题目描述判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例 1:输入:[ [“5”,“3”,".",".",“原创 2020-09-19 23:04:27 · 205 阅读 · 0 评论 -
LeetCode 算法系列:第 31 ~ 35题
目录下一个排列最长有效括号搜索旋转排序数组在排序数组中查找元素的第一个和最后一个位置搜索插入位置31. 下一个排列实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。 1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 →1,5,1思路找规律O(n):我们原创 2020-09-18 11:07:30 · 404 阅读 · 0 评论 -
LeetCode 算法系列:第 26 ~ 30题
目录26. 删除排序数组中的重复项27. 移除元素28. 实现 strStr()29. 两数相除30. 串联所有单词的子串26. 删除排序数组中的重复项题目描述给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为原创 2020-09-17 15:06:29 · 239 阅读 · 0 评论 -
LeetCode 算法系列:第 21 ~ 25题
目录21. 合并两个有序链表22. 括号生成23. 合并K个排序链表24. 两两交换链表中的节点25. K 个一组翻转链表21. 合并两个有序链表题目描述将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路 我们可以用迭代原创 2020-09-11 12:27:13 · 183 阅读 · 0 评论 -
LeetCode 算法系列:第 16 ~ 20 题
目录16. 最接近的三数之和17. 电话号码的字母组合18. 四数之和19. 删除链表的倒数第N个节点20. 有效的括号16. 最接近的三数之和题目描述给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 +1 =原创 2020-09-10 13:56:47 · 181 阅读 · 0 评论 -
LeetCode 算法系列:第 11 ~ 15 题
目录11. 盛最多水的容器12.整数转罗马数字13. 罗马数字转整数14. 最长公共前缀15. 三数之和11.盛最多水的容器题目描述 给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i,ai)和(i,0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值.原创 2020-09-09 10:34:32 · 357 阅读 · 0 评论 -
LeetCode 算法系列:第 6 ~ 10 题
目录Z 字形变换整数反转字符串转换整数 (atoi)回文数正则表达式匹配1. Z 字形变换题目描述将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “LEETCODEISHIRING” 行数为 3时,排列如下:L C I RE T O E S I I GE D H Nc++思路(找规律) O(n)O(n)这种按某种形状打印字符的题目,一般通过手画小图找规律来做。我们先画行数是4的情况:0原创 2020-09-08 11:18:57 · 294 阅读 · 0 评论 -
LeetCode 算法系列:第 1 ~ 5 题
1. 两数之和2. 两数相加3. 无重复字符的最长子串4. 寻找两个正序数组的中位数5. 最长回文子串6. Z 字形变换7. 整数反转8. 字符串转换整数 (atoi)9. 回文数10. 正则表达式匹配1.两数之和题目描述你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markd原创 2020-09-06 20:09:28 · 177 阅读 · 0 评论