logo头像
Snippet 博客主题

算法学习:回溯法1-排列组合问题

0 写在前面 回溯法:n叉不等高度数的完全遍历,明确树的下一个分支宽度与树的高度。 对于宽度:这个体现在回溯法模板的for循环里面 对于高度:体现在回溯法遍历结束的终止条件里面 这两个的核心思想如下: 排列问题要搞一个visited...

算法学习:排序

1 堆排序1.1 算法流程 从n/2-1处开始构建大根堆(使用堆调整算法) 堆顶元素此时为最大值,放入数组末尾,然后重新调整堆 调整堆算法: 输入:数组arr、堆长度n、根节点位置root 初始化左右子树与最大值索引变量,左子树...

算法学习:动态规划3-股票收益系列

1 买卖股票最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获...

算法学习:动态规划1-打家劫舍

递推关系  设置dp[i]为当前打劫到第i个户的最大收益,那么,当前收益等于前一个户的最大收益与前两个户的最大收益加上当前户的收益的最大值: dp[i] = max(dp[i-1],dp[i-2]+nums[i]...

学习算法:图算法-拓扑排序

一 算法流程 计算每一个节点入度 一般是用数组计算即可 使用邻接表数据结构,构建图 java里面可以申明一个数组,数组元素类型为一个list,每一个数组是一个list的引用,存储该节点所有的邻接节点 //邻接表,外层是一个数...

算法学习:区间问题

对力扣的区间类题目做一个总结! 合并区间1 算法思想 按照区间起点升序排序 //按照区间起始位置排序 /** 如果v1[0]-v2[0]为正,代表v1与v2交换位置,故这是升序排序 */ Arrays....

算法学习:二分查找

一、 原则1. 区间:左右闭区间2. while结束设定为<=3. 左右界更新都为mid上下1 二分查找可以设定左闭右开的写法,也可以左右都是闭区间,这里设定后者 在1的设定下,如果left=right,即当前搜索区间长度为...