|算法|
leetcode刷题记录
alexliu2360
后端/推荐系统/推荐算法
展开
-
【刷题】常考题目
1. 滑动窗口53. 大小为 K 的子数组的最大和121. Best Time to Buy and Sell Stock3. Longest Substring Without Repeating Characters239. Sliding Window Maximum剑指 Offer 57 - II. 和为s的连续正数序列2. 双指针双指针通常用在排好序的数组或是链表中寻找对子, 或者是merge 或者是排序,或者去除element,反正一般都是头尾各一个指针,然后根据条件原创 2022-02-18 17:13:44 · 187 阅读 · 0 评论 -
【算法-刷题】图论专题
1. 图论1.1 分类按表现形式邻接表邻接矩阵按图的种类无向图无向无环图无向有环图有向图有向有环图有向有环图加权图1.2 代码框架class Tranverse: def __init__(self): self.res = [] self.visited = {} def tranverse(self, _graph, _s, _path): """ :param原创 2022-02-17 16:41:27 · 731 阅读 · 0 评论 -
【算法-面试】数学专题
占个坑,后续补充思路# coding = "utf-8"''''''def singleNumber(nums): ''' 给定⼀个⾮空整数数组,除了某个元素只出现⼀次以外,其余每个元素均出现两次。找出那个只出现了⼀次的元素 leetcode: 136. 只出现⼀次的数字 input:[2,2,1] output:1 思路: 1. 异或运算 2. 元素与自身异或为0,元素与0异或为元素本身 3.原创 2022-02-11 16:15:30 · 179 阅读 · 0 评论 -
【算法-面试】区间专题
# coding = "utf-8"'''区间专题'''def merge(intervals): ''' 以数组 intervals 表示若⼲个区间的集合,其中单个区间为 intervals[i] = [starti, endi],请你将所有重叠的区间合并后返回。 leetcode:56. 合并区间 input: intervals = [[1,3],[2,6],[8,10],[15,18]] output: [[1,6],[8,10],[15,18]原创 2022-02-10 20:14:51 · 481 阅读 · 0 评论 -
【算法-面试】差分数组和前缀和专题
1. 差分数组# coding = "utf-8"'''差分数组差分数组的主要适用场景是频繁对原始数组的某个区间的元素进行增减'''class Diff: ''' 思路: 1. 2. 3. ''' def __init__(self, nums): self.nums = nums self.n = len(nums) self.__diff_nums = [0原创 2022-02-10 20:02:58 · 408 阅读 · 0 评论 -
【算法-面试】回溯法专题
# coding = "utf-8"'''回溯法39.组合总和40. 组合总和 II46. 全排列47. 全排列 II78. 子集90. 子集 II1. 子集问题可以利用数学归纳思想,假设已知一个规模较小的问题的结果,思考如何推导出原问题的结果。也可以用回溯算法,要用 start 参数排除已选择的数字。2. 组合问题利用的是回溯思想,结果可以表示成树结构,我们只要套用回溯算法模板即可,关键点在于要用一个 start 排除已经选择过的数字。3. 排列问题是回溯思想,也可以表示成树结构原创 2022-01-30 16:29:41 · 1061 阅读 · 0 评论 -
【算法-面试】广度优先遍历bfs专题
# coding = "utf-8"''''''def minDepth(root): ''' 给定⼀个⼆叉树,找出其最⼩深度,最⼩深度是从根节点到最近叶⼦节点(没有⼦节点的节点)的最短路径上的节点数量 leetcode: 111 二叉树的最小深度 input: [3,9,20,null,nul, 15, 7] 3 / \ 9 20 / \ 15 7 outp原创 2022-01-30 16:28:48 · 404 阅读 · 0 评论 -
【算法-面试】深度优先遍历dfs专题
# coding = "utf-8"'''130 被围绕的区域200 岛屿数量694 不同的岛屿数量695 岛屿的最大积1020 飞地的数量1254 统计封闭岛屿的数1905 统计岛屿'''class UnionFind: def __init__(self, n): self._count = n self.parent = [i for i in range(n)] self.size = [1 for _原创 2022-01-30 16:26:36 · 564 阅读 · 0 评论 -
【算法-面试】动态规划之二维dp
# coding = "utf-8"''''''def isMatch(s, p): ''' 给你⼀个字符串 s 和⼀个字符规律 p,请你来实现⼀个⽀持 '.' 和 '*' 的正则表达式匹配,'.' 匹配任意单个字符 '*' 匹配零个或多个前⾯的那⼀个元素。 算法返回 p 是否可以匹配整个字符串 s。 leetcode: 10. 正则表达式匹配 input:s = "aa" p = "a" output: false 思路:原创 2022-01-30 16:25:46 · 613 阅读 · 0 评论 -
【算法-面试】动态规划专题之一维dp
# coding = "utf-8"'''自顶向下 构建dp递归函数自底向上 构建dp数组'''def canJump(nums): ''' 给定⼀个⾮负整数数组 nums,你最初位于数组的第⼀个下标,数组中的每个元素代表你在该位置可以跳跃的 最⼤⻓度,判断你是否能够到达最后⼀个下标 leetcode:55. 跳跃游戏 input:nums = [2,3,1,1,4] output:true input:nums =原创 2022-01-30 16:25:04 · 690 阅读 · 0 评论 -
【算法-面试】动态规划专题之背包问题
# coding = "utf-8"'''0-1背包:https://mp.weixin.qq.com/s?__biz=MzAxODQxMDM0Mw==&mid=2247485064&idx=1&sn=550705eb67f5e71487c8b218382919d6&chksm=9bd7f880aca071962a5a17d0f85d979d6f0c5a5ce32c84b8fee88e36d451f9ccb3bb47b88f78&scene=21#wechat_原创 2022-01-30 16:24:07 · 580 阅读 · 0 评论 -
【算法-刷题】刷题目录(指南)
刷题目录原创 2022-01-05 20:17:28 · 410 阅读 · 0 评论 -
【算法-面试】二叉树专题
1. 二叉树思路:递归…2. 部分题目及题解# coding = "utf-8"'''二叉树思路: 1. 递归遍历'''class TreeNode(object): def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = rightinorder_list = []de原创 2021-12-13 20:49:36 · 219 阅读 · 0 评论 -
【算法-面试】队列-栈专题
1. 题目目录及常见思路占坑。不过常见的也就是括号、滑窗、单调栈之类的问题。比较有趣的是字节的一道题:字符串消消乐。我先把题目拿出来给大家看看,后续补上解题思路。'''题目字符串消消乐,将字符串中相邻相同的字符一起消掉,最后输出消除完成的字符串示例:abcccbxezzzrf7788fn输出:axern说明:从左住右消除,第一趟消除相邻相同的“ccc”、“zzz”、“77”、“88”,得到abbxerffn,第二趟消除相邻相同的“bb”、“ff”,得到axern,不存在相邻相同字符原创 2021-12-08 21:28:03 · 156 阅读 · 0 评论 -
【算法-面试】单链表专题
1. 题目列表-. 使用数组生成链表-. 打印链表-. 找到倒数第k个元素19.删除链表倒数第 n 个结点21.合并两个有序链表23.合并k个有序链表142. 环形链表 II160. 相交链表876. 链表的中间结点206. 反转链表25. K 个一组翻转链表83. 删除排序链表中的重复元素-. 反转前n个链表92. 反转链表 II234. 回⽂链表2.解题思路及python代码实现# coding = "utf-8"'''-. 使用数组生成链表-. 打印链表-原创 2021-12-06 19:46:12 · 449 阅读 · 0 评论 -
【算法-面试】数组双指针专题
说明这里的双指针 针对于数组的形式展开其他形式的双指针如滑动窗口如【算法-面试】子串专题【算法-面试】二分搜索专题# coding = "utf-8"'''数组常见思路: 快慢指针 滑动窗口'''def reverse_string(s): ''' 翻转数组 思路: 双指针 ''' l, r = 0, len(s) - 1 while l < r: temp = s[l]原创 2021-12-02 15:57:40 · 240 阅读 · 0 评论 -
【算法-面试】子串专题
# coding='utf8''''子串定义:连续的一串思路: 1. 动态规划 2. 滑动窗口'''from collections import defaultdictdef longest_palindrome(s): ''' 最长回文子串 leetcode: 5 input: babad output: 3 思路: 1. 从中间开始向两边扩散来判断回文串 2. 分别以[i,i]和[i,i原创 2021-11-26 15:28:42 · 167 阅读 · 0 评论 -
【算法-面试】二分搜索专题
def left_floor(nums, target): if len(nums) == 0: return -1 l, r, find = 0, len(nums) - 1, False while l <= r: mid = l + (r - l) // 2 if target == nums[mid]: find = True r = mid - 1 el.原创 2021-11-26 08:12:30 · 237 阅读 · 0 评论