算法
泰 戈 尔
只有初恋般的热情和宗教般的意志,人才可能成就某种事业。 -- 川哥
展开
-
记录一种另类的乘法规则
从小我们接触到的乘法都是以竖式来计算的,今天刷到一个短视频,介绍了另一种计算规则,挺有意思,记录一下。正式开始之前,先看下常规的竖式乘法。以 12 * 14 为例 12 * 14= 12 * (10 + 4)= 12 * 10 + 12 * 4= 120 * 48= 168而下面这种希腊乘法,规则却有所不同格式如下ab * cda * ca * c + b * cb * d---------bd + 10 * (a*c + b*c) + 100 * (a*c) = 1原创 2021-07-04 22:43:22 · 206 阅读 · 0 评论 -
前缀树
最近看代码,发现了一个敏感词检测是用前缀树写的,看起来速度蛮快,毕竟是拿空间换时间,LOG倍速。但是缺点也很明显,待检测文本需要与敏感词词库中的值完全匹配。所以对于简短的词法比较合适。原理:每一个节点可以有多个子节点节点“存储”字符, 节点与节点之间的连线自动形成单词。 如a节点与d节点,之间的连线就是单词 ad节点可能是叶子节点,此时也是一个单词的“终点”,否则是其他拥有相同前缀的节...原创 2018-12-15 17:25:22 · 1385 阅读 · 0 评论 -
simhash
听闻SimHash很强,对海量文档相似度的计算有很高的效率。查了查文档,大致的流程如下:大致流程就是:分词, 配合词频计算哈希串(每个分出来的词最终会计算处同样的长度), 降维,计算海明距离。#coding:utf8import mathimport jiebaimport jieba.analyseclass SimHash(object): def __init...原创 2018-09-09 15:57:35 · 1527 阅读 · 0 评论 -
Python 实现二叉树相关操作
前言方法声明二叉树相关霍夫曼树实现原理代码实现一实现方式2最终效果总结前言继昨天的链表,今天又复习了一下二叉树,发现之前很熟练的东西,现在确实是很生疏了。看来知识真的是不学就忘啊。方法声明在开始介绍之前,依然先来罗列一下实现了哪些方法:['getsize(self)']['print(self)']['qianxuDG(self, root)']['zhongxuDG(self原创 2017-04-06 20:58:12 · 9896 阅读 · 0 评论 -
Python 实现一个全面的单链表
前言实现清单链表实现总结前言算法和数据结构是一个亘古不变的话题,作为一个程序员,掌握常用的数据结构实现是非常非常的有必要的。实现清单实现链表,本质上和语言是无关的。但是灵活度却和实现它的语言密切相关。今天用Python来实现一下,包含如下操作:['addNode(self, data)']['append(self, value)']['prepend(self, value)']['i原创 2017-04-05 19:28:50 · 12221 阅读 · 5 评论 -
记 dotamax 面试第一题
前言正文思路存在一个数字存在两个数字总结前言今天接到了一个面试,面试官鑫哥声音很好听,人也很好,是我目前见到的所有面试官中最好的一位啦。可能还是知识面比较窄,第一个问题就把我给问倒了。一是太紧张,二是本身能力可能也没那么强,所以第一题没能想出来。面试完后,心里还是坠着一个石头似得,就一个想法,把这个问题搞明白,实现了。于是下午,着手实现了一下,在此做个笔记,希望对后来人能有所帮助。正文这道原创 2017-04-13 19:17:00 · 6680 阅读 · 0 评论 -
2017 携程 笔试编程题 1
前言正文题目要求思路n10n 18核心测试总结前言今天参加了携程的笔试,编程题第一题一开始想错了方向,花费了很多时间(虽然第二题就是给时间也不一定做得出来,(⊙﹏⊙)b)。下面记录一下这个小插曲。正文题目要求将指定的正整数n分解成若干个互不相同的自然数的和,且使这些自然数的乘积最大人家给了个输入输出的例子,如下:输入15输出 144言下之意就是在自然数之和为15的这些数字中,乘积最原创 2017-04-11 22:05:40 · 8749 阅读 · 2 评论 -
几个面试常考的问题
前言判断一个数是否为2的幂不使用if while forswitchgoto等关键字实现100行代码打印出1000个helloworld不使用实现一个加法函数不使用-实现减法函数实现BMP算法打靶问题总结前言最近正在紧锣旗鼓的准备面试,期间遇到了许多好精巧的算法问题。于是大致实现了下,做个笔记。判断一个数是否为2的幂这个题有两种解法,一个是常规的,思路如下: 不断的将这个数除2,求原创 2017-03-05 11:48:44 · 7601 阅读 · 1 评论 -
Python 妙用heapq
小顶堆求TopK大大顶堆求BtmK小题外话Python有一个内置的模块,heapq标准的封装了最小堆的算法实现。下面看两个不错的应用。小顶堆(求TopK大)话说需求是这样的: 定长的序列,求出TopK大的数据。import heapqimport randomclass TopkHeap(object): def __init__(self, k): self.k =转载 2016-10-04 16:26:43 · 8524 阅读 · 0 评论 -
从一个增强型的栈上 获得的启示
前言要感谢的人浅析正题题目要求题目要求实现思路数据栈排位栈双栈怎么配合实现的两种方式我的代码实现收获与启示前言要感谢的人临近暑假结束的时候,收到一封私信。是来自http://blog.csdn.net/u011068702 博友的。并向我推荐了一本好书。 程序员代码面试指南:IT名企算法与数据结构题目最优解,是左程云学者刷题五年的经验结晶,很赞的一本书。在此,再次感谢 ht原创 2016-09-06 22:21:36 · 6391 阅读 · 0 评论 -
Python实现八大排序算法(转载)+ 桶排序(原创)
插入排序核心思想代码实现希尔排序核心思想代码实现冒泡排序核心思想代码实现快速排序核心思想代码实现直接选择排序核心思想代码实现堆排序核心思想代码实现归并排序核心思想代码实现基数排序核心思想代码实现桶排序核心思想代码实现测试结果总结排序算法,重要性不言而喻。现摘录一篇,转载至此,以供学习鉴赏。插入排序核心思想插入排序的基本操作就是将一个数据插入到已转载 2016-09-06 12:03:19 · 8119 阅读 · 0 评论 -
熟悉Python的各种基础小算法
网上有一个Python100小例子的栏目,里面代码良莠不齐,于是下面就自己实现了其中的一些案例。01.py# coding:utf-8import sysreload(sys)sys.setdefaultencoding('utf8')# __author__ = '郭 璞'# __date__ = '2016/8/24'# __Desc__ = '''题目:有1、2、原创 2016-09-01 23:18:27 · 13480 阅读 · 6 评论 -
图解单链表逆序
逆序思想代码测试本篇博客,比较简单。对单链表逆序不理解的看看就可以了。逆序思想现假设有一链表,有待逆序操作。我们首先想到的就是将那个指针关系逆序了就行了呗。事实上,就是这样。博主就是以这个为目标来完成的单链表逆序操作。Node pre = null;Node post = null;while(head!=null){ post = head.next; head.next = pre原创 2016-09-09 20:22:40 · 6384 阅读 · 0 评论 -
数组中最大子矩阵,最简便的解法
遇到一个好人,可以改变一生;遇到一本好书,又何尝不是呢?最近在翻阅 左程云先生的《程序员代码面试指南–IT名企算法与数据结构题目最优解》时就非常的有感悟。建议有这方面爱好的博友,也去观摩观摩。书中讲解的基于栈的数组的最大矩阵的算法很经典,但是博主能力有限,没能彻底的领悟该算法的精髓,但是根据这个思想,博主想出了一种简易的应对该类问题的算法,现概述如下。核心思想先来看一张图吧,我们就可以大致的理解了。原创 2016-09-09 13:49:44 · 7270 阅读 · 0 评论