价值成长
这个作者很懒,什么都没留下…
展开
-
二十. 高精度计算
面试题 02.05. 链表求和。445. 两数相加 II。415. 字符串相加。原创 2023-01-24 20:00:45 · 106 阅读 · 0 评论 -
二十二. 区间合并模板
【代码】二十一. 区间合并。原创 2023-01-20 10:55:44 · 89 阅读 · 0 评论 -
二十一. 离散化模板
【代码】二十一. 离散化。原创 2023-01-19 23:24:46 · 80 阅读 · 0 评论 -
二十. 高精度计算模板
【代码】高精度计算。原创 2023-01-17 16:55:26 · 81 阅读 · 0 评论 -
九. 最大最小堆(优先队列)
剑指 Offer II 060. 出现频率最高的 k 个数字。786. 第 K 个最小的素数分数。347. 前 K 个高频元素。原创 2023-01-12 22:08:05 · 85 阅读 · 0 评论 -
十七. 贪心
推荐使用贪心,不推荐使用动态规划。原创 2022-12-13 09:41:38 · 94 阅读 · 0 评论 -
Leetcode
算法绕口令_价值成长的博客-CSDN博客一.Leetcode刷题顺序_价值成长的博客-CSDN博客二.二分查找模板_价值成长的博客-CSDN博客二.二分查找(排序旋转数组)_价值成长的博客-CSDN博客二.二分查找(mid)_价值成长的博客-CSDN博客三.双指针模板_价值成长的博客-CSDN博客三.双指针_价值成长的博客-CSDN博客四. 滑动窗口模板_价值成长的博客-CSDN博客四.滑动窗口_价值成长的博客-CSDN博客五. 排序算法_价值成长的博客-CSDN博客六.二叉树对称性递归的解题模板_价值成长原创 2022-10-08 10:09:33 · 575 阅读 · 0 评论 -
二十. 其他算法
面试题 05.03. 翻转数位class Solution: def reverseBits(self, num: int) -> int: num = bin(num) if num >= 0 else bin(((1 << 32) - 1) & num) n = num.split("0") ans = -1 for i in range(1, len(n)):原创 2022-02-10 23:15:16 · 600 阅读 · 0 评论 -
十九. 分治
8. 字符串转换整数 (atoi)原创 2022-07-09 10:35:00 · 66 阅读 · 0 评论 -
十八. 并查集模板
1.2.3.4.5.原创 2022-07-09 10:31:29 · 61 阅读 · 0 评论 -
十六. 位运算
461. 汉明距离面试题 05.03. 翻转数位231. 2 的幂1290. 二进制链表转整数原创 2022-07-09 10:27:45 · 115 阅读 · 0 评论 -
十五. bfs
1.2.3.4.5.原创 2022-02-17 21:55:58 · 199 阅读 · 0 评论 -
十四. 回溯, dfs
1.2.3.4.原创 2022-02-20 22:40:42 · 509 阅读 · 0 评论 -
十三. 动态规划(mid)
最长递增子序列class Solution: def lengthOfLIS(self, nums: List[int]) -> int: if not nums: return 0 # dp[i] 为考虑前 ii 个元素,以第 ii 个数字结尾的最长上升子序列的长度 dp = [] for i in range(len(nums)): dp.append(1) for j i原创 2022-01-08 18:34:30 · 767 阅读 · 0 评论 -
十三. 动态规划(easy)
剑指 Offer 62. 圆圈中最后剩下的数字class Solution: def lastRemaining(self, n: int, m: int) -> int: f = 0 for i in range(2, n+1): f = (f + m) % i return f原创 2022-02-08 15:05:42 · 514 阅读 · 0 评论 -
十三. 动态规划(背包问题)
1.2.3.4.5.原创 2022-02-10 09:05:16 · 234 阅读 · 0 评论 -
十二. 递归
面试题 08.06. 汉诺塔问题class Solution: def move(self, n: int, A: List[int], B: List[int], C: List[int]) -> None: if n == 1: C.append(A.pop()) else: self.move(n-1, A, C, B) # 将n-1个盘从A->B,借助C C.append原创 2022-02-08 21:49:29 · 848 阅读 · 0 评论 -
十一. 图
208. 实现 Trie (前缀树)560. 和为 K 的子数组原创 2022-02-05 16:27:42 · 310 阅读 · 0 评论 -
十. Hash表
面试题 01.02. 判定是否互为字符重排from collections import Counterclass Solution: def CheckPermutation(self, s1: str, s2: str) -> bool: c1 = Counter(s1) c2 = Counter(s2) return c1 == c2原创 2022-02-04 11:33:29 · 449 阅读 · 0 评论 -
九. 队列
239. 滑动窗口最大值class Solution: def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]: n = len(nums) # 注意 Python 默认的优先队列是小根堆 q = [(-nums[i], i) for i in range(k)] heapq.heapify(q) ans = [-q[0][0]]原创 2022-02-03 21:40:48 · 357 阅读 · 0 评论 -
八. 栈和单调栈
739. 每日温度class Solution: def dailyTemperatures(self, temperatures: List[int]) -> List[int]: stack, ans = [], [0] * len(temperatures) # 1.若栈为空或当日温度小于栈顶温度,则直接入栈 # 2.若当日温度大于栈顶温度,说明栈顶元素升温日找到,将栈顶元素出栈,计算其与当日相差的天数 for day原创 2022-02-03 17:21:10 · 6209 阅读 · 0 评论 -
七. 前缀和/前缀树/差分
剑指 Offer II 010. 和为 k 的子数组208. 实现 Trie (前缀树)原创 2022-07-09 10:30:17 · 179 阅读 · 0 评论 -
六.二叉树(mid)
1.把二叉搜索树转换为累加树# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def convertBST(self, root:.原创 2021-12-25 12:09:32 · 379 阅读 · 0 评论 -
六.二叉树(easy)
1.二叉树的深度# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def maxDepth(self, root: TreeNod.原创 2021-12-18 17:10:24 · 745 阅读 · 0 评论 -
六.二叉树构造
从前序与中序遍历序列构造二叉树# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def buildTree(self, preord原创 2022-01-07 14:30:03 · 219 阅读 · 0 评论 -
六.二叉树遍历
1.二叉树前序遍历1.1 递归# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def preorderTraversal(s.原创 2021-12-15 22:40:12 · 692 阅读 · 0 评论 -
六.二叉树对称性递归的解题模板
2.3 (单树)调用根节点(root)左右子树的递归函数进行递归判断。2.4 (双树)调用两棵树(p, q)的左右子树的递归函数进行判断。1、递归结束条件:特殊情况的判断。2.1 节点非空的判断。2.2 节点值比较判断。原创 2021-12-29 10:31:21 · 237 阅读 · 0 评论 -
五. 排序算法
1.定义:1.1 原地排序和非原地排序def. 原地排序算法使用恒定的的额外空间来产生输出。原地排序:选择排序,插入排序,希尔排序,快速排序,堆排序。非原地排序:归并排序,计数排序,基数排序。1.2内部排序和外部排序def. 当所有待排序记录不能被一次载入内存进行处理时,这样的排序就被称为外部排序。外部排序通常应用在待排序记录的数量非常大的时候。内部排序:其他。外部排序:归并排序以及它的变体。1.3 稳定排序和不稳定排序def.待排序序列中的相等记录,排序前后位置..原创 2021-12-14 18:03:52 · 548 阅读 · 1 评论 -
四.滑动窗口
3. 无重复字符的最长子串class Solution: def lengthOfLongestSubstring(self, s: str) -> int: res = 0 visited = list() for i in range(len(s)): # 左移窗口 while s[i] in visited: visited.pop(0) # 右移窗口原创 2022-02-01 16:37:33 · 680 阅读 · 0 评论 -
四. 滑动窗口模板
1. 初始化窗口左边界为0,右边界可以为0,也可以根据题意固定大小。2. 我们需要初始化一个ret的返回值,默认为0或者根据题意默认为最大值。最小值根据题意选择0 或 -float('inf');最大值根据题意选择 float('inf')3. 窗口的大小需要根据题目条件进行调整最大连续...尽量扩张右边界,直到不满足题意再收缩左边界最小连续...尽量缩小左边界,直到不满足题意再扩大右边界4. 在执行3操作的过程中,不断与ret进行比较5. 最终返回ret结果即可。初始化左边界 l.原创 2022-02-02 11:14:22 · 123 阅读 · 0 评论 -
三.双指针/链表/数组
面试题 16.06. 最小差class Solution: def smallestDifference(self, a: List[int], b: List[int]) -> int: a.sort(); b.sort() i = j = 0 res = float('inf') while i < len(a) and j < len(b): res = min(res, abs(a原创 2022-01-08 22:39:56 · 540 阅读 · 0 评论 -
三.双指针/链表/数组模板
1. 指针移动速度不同 有环链表# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def hasCycle(self, head: ListNode) -> bool: slow, fast = head, head.原创 2021-12-05 21:47:40 · 658 阅读 · 0 评论 -
二.二分查找(mid)
搜索旋转排序数组class Solution: def search(self, nums: List[int], target: int) -> int: def findElement(nums, target): left = 0; right = len(nums) - 1 while left <= right: mid = (left + right) // 2原创 2022-01-07 17:32:13 · 571 阅读 · 0 评论 -
二.二分查找(排序旋转数组)
搜索旋转排序数组class Solution: def search(self, nums: List[int], target: int) -> int: if not nums: return -1 l, r = 0, len(nums) - 1 while l <= r: mid = (l + r) // 2 if nums[mid] == target:原创 2022-01-08 20:27:37 · 486 阅读 · 0 评论 -
二.二分查找模板
1.寻找中间值class Solution: def findElement(self, nums: List[int], target: int) -> int: left = 0; right = len(nums) - 1 while left <= right: mid = (left + right) // 2 if target == nums[mid]: return mid elif target >原创 2021-11-25 22:06:56 · 363 阅读 · 0 评论 -
一.Leetcode刷题顺序
1.按照数据结构数组和链表(二分查找,排序(初级排序(选择,插入,希尔),高级排序(归并,快速,优先队列)),双指针,滑动窗口), 栈和队列(单调栈,单调队列,优先队列),树(二叉树, 二叉查找树, 平衡查找树,堆),图(无向图(DFS,BFS ),有向图,最小生成树(Prim,Kruskal),最短路径(Dijkstra)),Hash2.按照算法思想递归,回溯,分治,贪心,动态规划(背包)......原创 2021-11-14 14:29:19 · 365 阅读 · 0 评论 -
算法绕口令
算法绕口令原创 2022-07-03 09:10:36 · 107 阅读 · 0 评论