随笔分类 - 算法
摘要:需求 最长公共子序列,说起来比较抽象,换个接地气的说法: 寻找刘德化和梁朝伟的最长公共女粉丝 场景是这样的 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 输入:text1 = "abcde", text2 = "ace
阅读全文
摘要:需求 给定一维勾选的数据,导出多棵树结构,并给出每个节点的层级 例如,用户在下面的界面勾选了 这里包含了4棵树 问题来了,我们只有下面的一维列表数据,得根据这样的数据判断出所有的节点关系,构造出这4棵树 [ {"id":481412, "name":"重庆","parent_id":438556},
阅读全文
摘要:回溯算法介绍 回溯算法可以搜索一个问题的所有解,本质是用递归代替N层for循环来“暴力穷举” 原理如下: 从根节点出发深度搜索解空间树 搜索到有解的分支时,继续向下搜索 搜索到无解的分支时,回退到上一步,顾名思义“回溯” 框架套路 talk is cheap,show you the 套路,框架如下
阅读全文
摘要:滑动窗口算法 《代码大全》推荐先用伪代码来写框架,从最上层思考可以将抽象能力最大化,不会先陷入任何编程语言的实现细节中,通俗地说就是在蓝图层面解决问题。 滑动窗口算法非常适合用来查找数组连续区间,核心就是: while循环嵌套while循环 窗口收缩 窗口匹配 下面我们写出伪代码框架套路,并用这个套
阅读全文
摘要:题目 给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串。 示例: 输入: S = "ADOBECODEBANC", T = "ABC" 输出: "BANC" Python实现 import sys def longest_dup_substr(s, t):
阅读全文
摘要:需求 我们有如下的树型结构 想统一给这样的数据,添加目录索引,变成这样 我们知道从人眼看,只需要从上到下扫描就行了,可这要放在程序中可怎么写,很多时候你觉得简单的东西不一定简单,这就像你觉得"不存在最大的正整数"很正常,但是让你证明你却不会。 talk is cheap!两种实现方法奉上~ 方法一:
阅读全文
摘要:前言 框架思维非常重要,和语言无关,这是一种非常重要的抽象能力,吹得厉害一点,就是要有高屋建瓴,统筹全局的能力。 无限级树型结构的创建也是有套路的,下面由伟大的诗人chenqionghe给出套路框架,再分别套上相应的编程语言实现。 最终达到看到框架就能实现对应编程语言的代码,或者也可以直接copy实
阅读全文
摘要:前言 最近接到一个关于树的需求,想起了大学那会儿听过俞敏洪有关树的演讲,老师重复在课上放了很多次,N年过去了印象还是很深。 演讲内容是介样的,让我们一起来喝汤~ 人的生活方式有两种, 第一种方式是像草一样活着, 你尽管活着, 每年还在成长, 但是你毕竟是一棵草, 你吸收雨露阳光, 但是却长不大。 人
阅读全文
摘要:[toc] 一、需求 公司有一个比较坑爹的报销方案,需要根据一堆零碎的发票中,凑出一个目标金额,要求误差在1块钱以内。 例如:你有一堆发票[100, 101, 103, 105, 106, 132, 129, 292, 182, 188, 224.3, 40.5, 35.9, 32.5, 39, 1
阅读全文
摘要:[toc] 算法分类 连接分析:PageRank 关联分析:Apriori 分类算法:C4.5,朴素贝叶斯,SVM,KNN,Adaboost,CART 聚类算法:K Means,EM 一、PageRank 当一篇论文被引用的次数越多,证明这篇论文的影响力越大。 一个网页的入链越多,入链越优质,网页的
阅读全文
摘要:优先级队列的底层实现是堆(最大堆、最小堆) 一、堆的特点 1. 完全二叉树 2. 每个节点的值都必须大于等于或小于等于子树中节点的值(对应最大堆、最小堆) 3. 往堆中插入和删除一个元素的时间复杂度都是O(logn) 二、实现 最大堆和最小堆实现原理基本一样,下面实现一个最大堆 输出 三、堆排序 1
阅读全文
摘要:一致性哈希算法是分布式系统中常用的算法,为什么要用这个算法?比如:一个分布式存储系统,要将数据存储到具体的节点(服务器)上, 在服务器数量不发生改变的情况下,如果采用普通的hash再对服务器总数量取模的方法(如key%服务器总数量),如果期间有服务器宕机了或者需要增加服务器,问题就出来了。 同一个k...
阅读全文
摘要:今天碰到一个比较有意思的问题, 就是把A到Y这25个字母以下面的形式输出出来ABCDEPQRSFOXYTGNWVUHMLKJI问题很有意思,就是转圈圈把字母填到表格中,要输出这样的格式,其实就需要构造一个下面这样的表格12345161718186152425207142322218131211109...
阅读全文
摘要:比如现在有5个奖品,分别是1.苹果 2.香蕉 3.橙子 4.葡萄 5.柚子 中奖机率如下: 苹果:10% 香蕉:5% 橙子:60% 葡萄:10% 柚子:5% 1.根据奖品个数和中奖机率定义一个奖品概率数组,总和为100; sum = 0; $sec
阅读全文