随笔分类 -  算法与数据结构

摘要:dp方法 def longest_palindrome(s): # input: str output: longest substing # 对于空字符、一个字符,都是其本身 if not s: return '' n = len(s) print(f"字符长度:{n}") # state is_ 阅读全文
posted @ 2022-08-11 14:58 今夜无风 阅读(77) 评论(0) 推荐(0) 编辑
摘要:g功能:快速查找前缀符、字符 class Trie(object): def __init__(self): self.child = {} def insert(self, word): current = self.child for w in word: if w not in current 阅读全文
posted @ 2022-08-08 14:19 今夜无风 阅读(73) 评论(0) 推荐(0) 编辑
摘要:问题:给你一个字符矩阵和单词列表,输出字符矩阵能够组合成列表中的哪些词 dfs回溯算法+剪枝 # 字符矩阵+字典 -> 矩阵和字典中同时存在的词 dic = ["doaf", "agai", "dcan"] dic = [['d', 'o', 'a', 'f'], ['a', 'g', 'a', ' 阅读全文
posted @ 2022-08-05 20:23 今夜无风 阅读(103) 评论(0) 推荐(0) 编辑
摘要:dfs方法 输入:s = "abc" 输出:["abc","acb","bac","bca","cab","cba"] class Solution: def permutation(self, s: str) -> List[str]: if not s: return s chars = sor 阅读全文
posted @ 2022-08-05 08:31 今夜无风 阅读(452) 评论(0) 推荐(0) 编辑
摘要:方法一 深度优先遍历 def k_sum(nums, k, target): if not nums: return subsets = [] dfs(nums, 0, k, target, [], subsets) return subsets # 1.递归的定义 def dfs(nums, in 阅读全文
posted @ 2022-08-02 09:44 今夜无风 阅读(89) 评论(0) 推荐(0) 编辑
摘要:在随机初始化中使用该模块 # 列表中的数据随机分布 import random n = 10 path = [i for i in range(1,n+1)] print(f'初始化10个数: {path}\n将其随机打乱->') for i in range(2,n): j = random.ra 阅读全文
posted @ 2022-08-01 11:51 今夜无风 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2022-07-31 13:18 今夜无风 阅读(12) 评论(0) 推荐(0) 编辑
摘要:问题:给定一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 回溯dfs class Solution: def subsets(self, nums: List[int]) -> List[List[int]]: res = [] self.back_track 阅读全文
posted @ 2022-07-31 13:16 今夜无风 阅读(19) 评论(0) 推荐(0) 编辑
摘要:问题理解: 一共有 n 门课要上,编号为 0 ~ n-1。 先决条件[1, 0],意思是必须先上课 0,才能上课 1。 给你 n 、和一个先决条件表,请你判断能否完成所有课程。 bfs方法模板 def find_order(n=4): courses = [[1, 0], [2, 0], [3, 1 阅读全文
posted @ 2022-07-29 14:31 今夜无风 阅读(45) 评论(0) 推荐(0) 编辑
摘要:BitMap算法的核心思想是用bit数组来记录0-1两种状态,然后再将具体数据映射到这个比特数组的具体位置,这个比特位设置成0表示数据不存在,设置成1表示数据存在。 BitMap算在在大量数据查询、去重等应用场景中使用的比较多,这个算法具有比较高的空间利用率。 class Bitmap(): def 阅读全文
posted @ 2022-07-26 23:29 今夜无风 阅读(416) 评论(0) 推荐(0) 编辑
摘要:主体代码模板: from collections import deque # 使用双端队列deque,Queue更为复杂不可用 def bfs(): queue = deque([root]) # 队列数据结构实现 visited = set(root) # 标记访问节点 while queue: 阅读全文
posted @ 2022-07-26 09:53 今夜无风 阅读(72) 评论(0) 推荐(0) 编辑
摘要:单调栈专题,可以按照这个列表来刷。 [LeetCode-42] 接雨水 [LeetCode-239] 滑动窗口最大值 [LeetCode-496] 下一个更大元素 I [LeetCode-503] 下一个更大元素 II [LeetCode-739] 每日温度 [LeetCode-901] 股票价格跨 阅读全文
posted @ 2022-07-23 18:07 今夜无风 阅读(20) 评论(0) 推荐(0) 编辑
摘要:双指针的两种方法 方法一:时间复杂度logN,空间复杂度1 nums = [1,2,0,5,7,0] low = 0 # 指向非零部分的最后一个位置 fast = 0 # 遍历列表元素 n = len(nums) while fast < n: # 走一遍,原始空间上已经存有非零数字 if nums 阅读全文
posted @ 2022-07-23 15:49 今夜无风 阅读(174) 评论(0) 推荐(0) 编辑
摘要:由九章算法-令狐提出 data = [1,3,6,8,8,12,88,943] # 第一个等于target的索引位置 def binarySearch(nums,target): if not nums: return -1 start, end = 0, len(nums)-1 while sta 阅读全文
posted @ 2022-07-21 09:36 今夜无风 阅读(100) 评论(0) 推荐(0) 编辑
摘要:平均时间复杂度: nlogn 最为常用的排序算法 def quick_sort(data, start, end): # 快排原地排序,直接对原list排序,没有返回值 if start>=end: return # 开始结束索引不能破坏 left, right = start, end mid = 阅读全文
posted @ 2022-07-20 09:44 今夜无风 阅读(35) 评论(0) 推荐(0) 编辑
摘要:先分再治 def merge_sort(data): if len(data)==1: return data mid = len(data) // 2 print(mid) left, right = data[:mid], data[mid:] return merge(merge_sort(l 阅读全文
posted @ 2022-07-18 22:42 今夜无风 阅读(18) 评论(0) 推荐(0) 编辑
摘要:问题: # 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),# 并返回该子数组所对应的乘积。 # # # # 示例 1: # # 输入: [2,3,-2,4]# 输出: 6# 解释: 子数组 [2,3] 有最大乘积 6。 方法:动态规划,构建两个dp, 阅读全文
posted @ 2021-10-17 20:30 今夜无风 阅读(206) 评论(0) 推荐(0) 编辑
摘要:问题: # 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 # # 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,po# s 仅仅是用于标识环的情况,并不会作为参数 阅读全文
posted @ 2021-10-16 14:57 今夜无风 阅读(56) 评论(0) 推荐(0) 编辑
摘要:问题: # 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。 # # # # 实现 LRUCache 类: # # # LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存 # int get(int key) 如果关键 阅读全文
posted @ 2021-10-16 14:54 今夜无风 阅读(121) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示