08 2022 档案
摘要:主要思路:借鉴堆、队列特点,构建新的有序结果 # merge the k sorted list # main idea: 将每个list放入队列,初始一个小顶堆,size为list个数,value为队列的首个元素,交替寻找最小值存储到新list中 import heapq from collect
阅读全文
摘要:问题:在一个由 '0' 和 '1' 组成的二维矩阵内,找到只包含 '1' 的最大正方形,并返回其面积。 输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1&
阅读全文
摘要:问题: 给你 k 枚相同的鸡蛋,并可以使用一栋从第 1 层到第 n 层共有 n 层楼的建筑。 已知存在楼层 f ,满足 0 <= f <= n ,任何从 高于 f 的楼层落下的鸡蛋都会碎,从 f 楼层或比它低的楼层落下的鸡蛋都不会破。 每次操作,你可以取一枚没有碎的鸡蛋并把它从任一楼层 x 扔下(满
阅读全文
摘要:问题: 在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物? 示例: 输入: [ [1,3,1], [1,5
阅读全文
摘要:问题:在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。 火车票有 三种不同的销售方式 : 一张 为期一天 的通行证售价为 costs[0] 美元;一张 为期七天 的通行证售价为 c
阅读全文
摘要:问:四个人玩牌,去掉大小王,一个人拿牌的组合有多少种可能 方法一:DFS # 牌的组合数.常识:13*4+2=54 张牌。每一类大小可以拿的张数有:0, 1, 2, 3, 4。问:四个人玩牌,一个人拿牌的组合数有多少种 count = 0 card_num = 0 def num_conbinati
阅读全文
摘要:方法一、暴力法 方法二、前缀和 + HashMap 求解和的方式往往能够分解成sum-k方式,查找此key是否在该dict中,count累加计数 # prefix sum nums = [1,1,1,1] k, count = 2, 0 dic = {0:1} # 和为key的前缀和有value个
阅读全文
摘要:一个文本卷积模块 def cnn(): import numpy as np result = [] n, dim = 10, 30 kernels = [np.random.randint(0,2,(i, dim)) for i in range(3,6)] # 生成3个长度不同的一维卷积核 da
阅读全文
摘要:博客地址:http://blog.csdn.net/wangxinginnlp/article/details/52944649 资料:https://arxiv.org/abs/1409.0473 说明:基于注意力机制的神经机器翻译(Attention-based NMT)的论文,首次将注意力机制
阅读全文
摘要:前缀型动态规划 def longest_common_seq(s1, s2): if not s1 or not s2: return m, n = len(s1), len(s2) # dp[i][j] = max(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]),当前字
阅读全文
摘要:前缀、序列型动态规划 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 示例 1: 输入:nums = [10,9,2,5
阅读全文
摘要:记忆化搜索是DP的一种实现方式,等价于动态规划 一个经典的例子:数字三角形 给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于
阅读全文
摘要:最长公共前后缀学习:https://www.shpity.com/index.php/archives/262/ 参考资料:https://www.geeksforgeeks.org/kmp-algorithm-for-pattern-searching/ https://iq.opengenus.
阅读全文
摘要:定义f[i][j]为word1前i个字符到word2的前j个字符的转化的最小步。 接着,我们来考虑状态转移方程。 假设对于f[i][j]以前的之都已知,考虑fi的情形。 若word1[i] = word2[j],那么说明只要word1的前i-1个能转换到word2的前j-1个即可,所以
阅读全文
摘要:dp方法 def longest_palindrome(s): # input: str output: longest substing # 对于空字符、一个字符,都是其本身 if not s: return '' n = len(s) print(f"字符长度:{n}") # state is_
阅读全文
摘要: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
阅读全文
摘要:问题:给你一个字符矩阵和单词列表,输出字符矩阵能够组合成列表中的哪些词 dfs回溯算法+剪枝 # 字符矩阵+字典 -> 矩阵和字典中同时存在的词 dic = ["doaf", "agai", "dcan"] dic = [['d', 'o', 'a', 'f'], ['a', 'g', 'a', '
阅读全文
摘要: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
阅读全文
摘要:方法一 深度优先遍历 def k_sum(nums, k, target): if not nums: return subsets = [] dfs(nums, 0, k, target, [], subsets) return subsets # 1.递归的定义 def dfs(nums, in
阅读全文
摘要:在随机初始化中使用该模块 # 列表中的数据随机分布 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
阅读全文