随笔分类 - 算法
摘要:剑指 Offer 14- I. 剪绳子 该题本质就是求组成n的和子集乘积最大化 分析 长度 组合 最大乘积 2 1x1 1 3 1x2 2 4 2x2 4 5 3x2 6 6 3x3 9 7 3x2x2 12 8 3x3x2 18 9 3x3x3 27 10 3x3x4 36 11 3x3x3x2
阅读全文
摘要:剑指 Offer 29. 顺时针打印矩阵 循环打印二维数组/矩阵的规律: 从左向右打印,此时上边界向下移动,行不变,列++ 从上向下打印,此时右界向左移动,列不变,行++ 从右向左打印,此时下边界向上移动,行不变,列-- 从下向上打印,此时上左界向右移动,列不变,行-- 算法框架 int t=0,b
阅读全文
摘要:leetcode 785. 判断二分图 分析 如果给定的无向图连通,那么我们就可以任选一个节点开始,给它染成红色。随后我们对整个图进行遍历,将该节点直接相连的所有节点染成绿色,表示这些节点不能与起始节点属于同一个集合。我们再将这些绿色节点直接相连的所有节点染成红色,以此类推,直到无向图中的每个节点均
阅读全文
摘要:滑动窗口算法本质就像卷尺拉伸缩短测量,当不满足条件是向右拉伸,当满足条件时像左拉伸 滑动窗口框架 //左边界 int i=1; //右边界 int j=1; while(i<target){ if(条件1){ //右边界向右 sum+=j; j++; }else if(条件二){ //左边界向左 s
阅读全文
摘要:常用算法 1.搜索算法 1).BFS(breadth first search) 以当前节点兄弟节点优先路径的探索方法 应用:最短路径查找 案例:查找某个目录下所有的文件 //深度搜索遍历文件夹下所有文件 public static void dfsListFile(String dirPath,
阅读全文
摘要:动态规划 动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再根据子问题的解以得出原问题的解 动态规划框架 //动态规划框架 //初始化 base case dp[0][0][...] = base //进行状态转移 for '状态1' in '状态1的所
阅读全文
摘要:蓄水池抽样/水塘抽样算法 给定一个数据流,数据流长度N很大,且N直到处理完所有数据之前都不可知,请问如何在只遍历一遍数据(O(N))的情况下,能够随机选取出m个不重复的数据。** 这个场景强调了3件事: 数据流长度N很大且不可知,所以不能一次性存入内存。 时间复杂度为O(N)。 随机选取m个数,每个
阅读全文
摘要:汉诺塔解题思路 汉诺塔塔问题符合数学统计归纳,千万别试图去理解n层移动问题(或者说去理解n层递归,人脑真不够用),理解3层汉诺塔问题就行。总结起来如下:递归的理解的要点主要在于放弃!放弃你对于理解和跟踪递归全程的企图,只理解递归两层之间的交接,以及递归终结的条件。 解题算法 如果A柱子只剩一个盘子,
阅读全文

浙公网安备 33010602011771号