- 博客(149)
- 资源 (1)
- 收藏
- 关注
原创 Django 4.0.6源码分析:自动重启机制
最近在研究Django框架,同样也有自动重启的功能,这次我们就来研究一下吧。runserver对应的实例就是django.core.management.commands.runserver.Command实例,下面分析。由上可见,pythonmanage.pyrunserver根据runserver命令,去寻找并构造了特定的实例来执行具体逻辑。发现监测文件改动并自动重启的逻辑在django/utils/autoreload.py中,下面重点研究。先看下manage.py的代码。.........
2022-07-20 14:54:02 1135
原创 括号生成 (Python)
LeetCode链接首先考虑生成所有的情况,每一次都在之前的基础上加上一个左括号或者右括号,直到达到2n的长度为止在生成的途中加入有效性的判断:
2022-06-01 21:30:56 373
原创 N叉树的层序遍历 两种方法 (Python)
队列"""# Definition for a Node.class Node: def __init__(self, val=None, children=None): self.val = val self.children = children"""class Solution: def levelOrder(self, root: 'Node') -> List[List[int]]: if not root:
2022-05-29 16:05:28 1009
原创 二叉树的层序遍历
使用队列# 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 levelOrder(self, root: TreeNode) -&
2022-05-29 15:46:11 89
原创 N叉树的前、后序遍历 (Python)
递归后序"""# Definition for a Node.class Node: def __init__(self, val=None, children=None): self.val = val self.children = children"""class Solution: def postorder(self, root: 'Node') -> List[int]: res_list = []
2022-05-29 14:03:07 522
原创 二叉树的前、中、后序遍历 两种解法(Python)
递归 时间复杂度 O(N)# 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 inorderTraversal(self, roo
2022-05-28 15:07:59 111
原创 字母异位词分组 两种解法 (Python)
排序作为dict的键 时间复杂度 O(n * klogk)class Solution: def groupAnagrams(self, strs: List[str]) -> List[List[str]]: dic = collections.defaultdict(list) for str in strs: dic[''.join(sorted(str))].append(str) return list(di
2022-05-25 17:41:02 110
原创 有效的字母异位词 四种解法(Python)
排序 时间复杂度 O(NlogN)class Solution: def isAnagram(self, s: str, t: str) -> bool: return len(s) == len(t) and sorted(s) == sorted(t)使用 26位的数组 时间复杂度 O(N)class Solution: def isAnagram(self, s: str, t: str) -> bool: if len(s) !
2022-05-25 17:14:55 142
原创 接雨水 四种解法(Python)
单调栈 时间复杂度O(N)class Solution: def trap(self, height: List[int]) -> int: indexStack = [] sum = 0 for i in range(len(height)): while indexStack and height[i] > height[indexStack[-1]]: bottom = in
2022-05-18 22:16:56 1294
原创 设计循环双端队列 两种解法(Python)
数组实现class MyCircularDeque: def __init__(self, k: int): ''' front last 都从0开始 front始终指向第一个元素的位置,从队首插入 先循环前移front再插入 last 指向最后一个元素的下一个的位置,从队尾插入,先存值,再后移last ''' self.front = 0 self.last = 0
2022-05-17 21:13:21 260
原创 滑动窗口最大值 两种解法(Python)
暴力法 时间复杂度 O(N*K)class Solution: def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]: res = [] for i in range(len(nums) - k + 1): res.append(max(nums[i:i + k])) return res单调队列 时间复杂度 O(N)class Solu
2022-05-17 10:02:53 646
原创 柱状图中最大的矩形 两种解法 (Python)
暴力法1:两重循环遍历 时间复杂度 O(N^3)class Solution: def largestRectangleArea(self, heights: List[int]) -> int: heightsLen = len(heights) maxArea = 0 # 此处i需要遍历数组中的全部值 for i in range(heightsLen): for j in range(i, hei
2022-05-15 16:19:22 2419
原创 最小栈 一种解法(Python)
使用辅助栈 时间复杂度 O(1)非同步栈class MinStack: def __init__(self): self.stack = [] self.min_stack = [] def push(self, val: int) -> None: self.stack.append(val) if not self.min_stack or val <= self.min_stack[-1]:
2022-05-11 21:41:03 209
原创 有效的括号 两种解法(Python)
暴力替换 时间复杂度 O(N^2)class Solution: def isValid(self, s: str) -> bool: if len(s) % 2 == 1: return False while True: startLen = len(s) s = s.replace('[]','') s = s.replace('{}','')
2022-05-10 21:56:00 200
原创 加一 一种解法(Python)
逆序找出第一个不为9的数 加一 其后所有位置0 若都为9 则直接变为 [1,0,0…]class Solution: def plusOne(self, digits: List[int]) -> List[int]: for i in range(len(digits) - 1, -1, -1): if digits[i] != 9: digits[i] = digits[i] + 1
2022-05-06 20:38:51 586
原创 合并两个有序数组 三种解法(Python)
直接合并然后排序 时间复杂度 O((m + n)log(m + n))class Solution: def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None: """ Do not return anything, modify nums1 in-place instead. """ nums1[m:] = nums2
2022-05-06 18:17:30 3367
原创 合并两个有序链表 两种解法(Python)
迭代 时间复杂度 O(n + m)# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[
2022-05-06 17:34:19 813
原创 轮转数组 三种解法(Python)
LeetCode链接使用额外的数组 时间复杂度O(N) 空间复杂度O(N)class Solution: def rotate(self, nums: List[int], k: int) -> None: """ Do not return anything, modify nums in-place instead. """ new_nums = nums[:] nums_len = len(nums)
2022-05-05 18:23:50 887 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人