
算法
齐梦星空
专注
展开
-
leetcode的背包问题
01 背包题目有N件物品和一个容量为V的背包。第i件物品的费用是w[i],价值是v[i],求将哪些物品装入背包可使价值总和最大。题解定义数组dp[i][j] # 代表前i个商品,放入一个容量为j的背包,所获得的最大价值初始化# 如果要求恰好放满背包,则数组初始化为 -infdp = [[-inf] * (amount + 1) for _ in range(n)]# 如...原创 2020-03-28 23:46:57 · 674 阅读 · 0 评论 -
从状态机看股票交易问题
概述动态规划的一种典型题型:一般的动态规划都是 dp[n] = f(dp[x])但是有一种题型的动态规划的转移方程是:dp[n] = f(g[x]) g[x] = dp[x]这种就是含状态机的动态规划问题股票交易问题的通用解法:定义动态数组:dp[i][k][0] 代表当前天是第i天,已经交易k次,现在不持有股票的最大利润dp[i][k][1] 代表当前天是第i天,已...原创 2020-03-25 10:34:15 · 316 阅读 · 0 评论 -
二叉树的各种常见题型
前序遍历def pre_search(root: TreeNode): res = [] if root is None: return res stack = [root] # 使用的是栈 while stack: p = stack.pop() res.append(p.val) if p....原创 2020-03-11 22:36:49 · 264 阅读 · 0 评论 -
LRU内存置换算法的实现和Redis实现
LRU内存置换算法的实现和Redis实现转载 2020-03-02 15:55:01 · 215 阅读 · 0 评论 -
数据结构之排序(9种)
概览插入排序直接插入排序将数组分为两部分,前半部分有序,后半部分无序,依次从后面取数据,插入到前面指定位置。def insertSort(nums): size = len(nums) for i in range(1, size): temp = nums[i] # 待排序的数据 count = i-1 # 代表前面有count个数据...原创 2020-03-01 11:07:53 · 3126 阅读 · 0 评论 -
三种快速排序的图示和python实现
class Solution: def sort(self, arr): def quickSort(s, start, end): if start < end: index = getIndex(s, start, end) quickSort(s, start, index ...原创 2019-12-07 11:51:28 · 218 阅读 · 0 评论 -
二分查找法技巧
1 闭区间int start = 0;int end = nums.size() - 12 小于号注意终止条件是start<end 不能是两者相等3 防溢出middle = left + (right - left) / 2;4 ±1int binarySearch(vector<int> &nums, int target) { ...原创 2020-02-26 18:55:07 · 229 阅读 · 0 评论 -
由排列组合来看回溯剪枝
全排列由m个数字里面选n个进行全排列,(0,1)和(1,0)不互斥:def n_of_m_circle(total, num): count = 0 time = 0 def circle(n, begin, queue): if len(queue) == num: nonlocal time ...原创 2019-09-22 22:16:28 · 292 阅读 · 0 评论