
算法
文章平均质量分 68
Yotwei
这个作者很懒,什么都没留下…
展开
-
回溯法简单应用--解数独
介绍用回溯法解标准数独,附上Java代码原创 2017-11-06 14:21:45 · 2108 阅读 · 2 评论 -
空间索引-四叉树的实现及其应用
什么是四叉树?四叉树(Quad Tree)是一种空间索引树,四叉树的每一个节点都代表着一块矩形区域。我们知道在平面直角坐标系中,平面可以被分为第一二三四象限,四叉树的每一个节点也类似,可以分裂为四个子节点,子节点在满足条件的情况下可以继续分裂,这样构成了一个四元的树状结构,就是四叉树。 四叉树的作用通常使用树结构能够带来高效且简单的检索效果,四叉树也不例外,四叉树主要用于二维空间的...原创 2018-10-31 15:57:34 · 19356 阅读 · 0 评论 -
网易游戏(互娱)游戏研发一面&二面(已收到offer)
简单来讲下上周面网易互娱的心得(因为我不是走内推而是直接怼笔试的,所以上周才有了笔试结果然后被告知面试),我面的岗位是游戏研发工程师(初级) 一面(40分钟左右)开始是简单的自我介绍C++:关于C++问的比较简单,因为我跟面试官说我主要学的是Java(其实这点我也比较担心会有影响),问得有针对C++问得有virtual关键字和静态库与动态库但是两种语言的共性——面向对象...原创 2018-09-28 11:04:00 · 35058 阅读 · 6 评论 -
字典树与前缀匹配
简介前缀匹配大家都不陌生,运用也很广泛,常见的应用是输入框的自动提示,像Linux这样的操作系统命令行的自动补全,也是前缀匹配的一个应用。字典树字典树有如下性质1,根节点不包含字符,除根节点意外每个节点只包含一个字符。2,从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。3,每个节点的所有子节点包含的字符串不相同。代码实现字典树节点的定义 ...原创 2018-09-10 09:07:13 · 2239 阅读 · 0 评论 -
Huffman树与Huffman编码的代码实现
Huffman树构建过程1、给定集合S,包含n个元素,每个元素拥有一个权值w2、从集合中取出集合最小的两个元素,创建一个新的父节点,左右子节点分别指向这两个节点,父节点的权值为两节点权值之和,将父节点放回集合中3、将步骤(2)重复n-1次,最后获得的父节点作为树的根节点,Huffman树构建完成。Huffman编码对于哈夫曼树的每个节点,到左孩子的边标记为0,右孩子标记为1,(...原创 2018-09-12 17:32:22 · 1067 阅读 · 0 评论 -
模糊匹配之——BK树与拼写纠正
介绍拼写纠错功能常常出现在比较高级的文本编辑应用中,例如大家熟知的word,高级一点的IDE例如Jet Brains系列,在一些在线翻译上,也有自动校正拼写的功能,例如谷歌翻译。原理拼写纠正的实现方式有多种,这里使用的是一种名为BK树的数据结构,也叫作Burkhard-Keller树,是由Burkhard,Keller这两人提出来的,不过网上能找到的相关资料并不多,参见ACM文档htt...原创 2018-09-09 11:18:18 · 1732 阅读 · 1 评论 -
迷宫的生成——深度优先搜索
生成一个迷宫的算法有好几种,下面来介绍一下用深度优先搜索的思想来生成一个迷宫。 算法描述迷宫的初始状态是一张有众多单元格组成的网格,单元格的初始状态是“四面有墙”,DFS的步骤如下1.将起点作为当前迷宫单元并标记为已访问2.当还存在未标记的迷宫单元,进行循环 1.如果当前迷宫单元有未被访问过的的相邻的迷宫单元 1.随机选择一个未访问的相邻迷宫单元 2.将当前迷宫单...原创 2018-08-13 22:58:23 · 1106 阅读 · 1 评论 -
Java的迭代器与迭代子模式
概括Java集合容器是Java的一个重要组成部分,而迭代器(Iterator)就是对外提供访问集合元素的一种方式。访问数组元素的方式访问数组的方式并不陌生,如下public class Test { public static void main(String[] args) { int[] arr = {2, 0, 1, 8, 0, 6, 0, 7}; ...原创 2018-06-09 11:03:18 · 735 阅读 · 0 评论 -
第九届蓝桥杯国赛参赛心得
ps:这是我第一次参加蓝桥杯的国赛,非专门玩ACM的,也很少去彻底钻研很高深的算法 我参加的是C/C++大学B组,客观来说题目从题难度不高,总共6道,我估计自己做出了4.5道,最后拿的是国二,没有一等奖有点遗憾,不过归根结底还是自己水平还不够吧。简单说下国赛的题目内容吧。 第一题签到题,大概意思是用面额为1,2,5的钞票换取200的金额,并且有约束条件“面额为2的张数恰...原创 2018-05-28 22:11:27 · 2261 阅读 · 0 评论 -
用Java写一个Photo Mosaic
早在两星期前也写了个“马赛克拼图”,不过只支持黑白色的图片,昨天试了下拼彩色图片,先来一张预览图,效果还是可以的实现思路1、准备大量小张方形素材,为了方便表述,姑且称这些图片为“Tile”2、对于每一个Tile,作如下处理:统一压缩成同一大小,我压缩成了32x32计算平均RGB值“简化”RGB值,我这么做是因为Tile素材量还不够大,我希望能将平均RGB值相近的Tile都归为一组,分组也方便后面对...原创 2018-04-12 14:36:14 · 824 阅读 · 0 评论 -
用Java实现简单的“马赛克拼图”
先来一张效果图这些头像都来自微信好友的,放大看这不过是一张众多头像拼成的大图,缩小或远看能够发现这些头像其实拼出了一个有趣的图案。这个实现思路并不复杂(这个思路暂时只针对黑白的图片,如果要支持彩图会更复杂一点,可以了解下 foto-mosaik-edda)首先需要一张“参考图片”和大量小图片(最好都是方形的,头像是个很好的选择)计算每一张方形小图片的平均灰度值,计算公式为 gray = (77*r...原创 2018-03-28 11:33:09 · 2520 阅读 · 1 评论 -
【算法题】最大的奇约数
题目来源:网易我的解法: 一开用的是始逐项求最大奇数然后相加的解法,由于后面几个测试用例的n比较大,所以运行超时了,这样就不得不从中找规律来解。 不难发现,当x为奇数时,f(x)=x。 当n为奇数,s(n) = f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + .... + n = (1 + 3 + 5 + 7 + .....原创 2018-03-22 11:25:56 · 359 阅读 · 0 评论 -
【算法】跳石板问题(广度优先搜索)
题目描述(来源:网易的笔试题) 小易来到了一条石板路前,每块石板上从1挨着编号为:1、2、3.......这条石板路要根据特殊的规则才能前进:对于小易当前所在的编号为K的 石板,小易单次只能往前跳K的一个约数(不含1和K)步,即跳到K+X(X为K的一个非1和本身的约数)的位置。 小易当前处在编号为N的石板,他想跳到编号恰好为M的石板去,小易想知道最少需要跳跃几次可以到达。 例如: N = 4,M...原创 2018-03-08 15:34:04 · 482 阅读 · 0 评论 -
【算法题】不使用四则运算求A+B
题目描述最近看到一道比较有趣的算法题,原题是这样的: 写一个函数,求两个整数(int)之和,要求在函数体内不得使用+、-、*、/四则运算符号。我的解法public int add(int num1, int num2) { return (num1 & num2) == 0 ? num1 ^ num2 : add(num1 ^ num2, (num1 & num2) << 1);原创 2018-02-03 18:45:05 · 577 阅读 · 0 评论 -
用Python手写一个JSON解析程序
JSON的组成一个合法的JSON字符串可以包含这几种元素:特殊符号,如 "{" "}" 表示一个JSON Object,"[" "]" 表示一个JSON Array,":"用于分隔key-value,"," 用于分隔两个元素 字符串,用引号引起来 数字,包含0-9,浮点数带有".",表示符号可带有"+" "-" 常原创 2018-12-22 10:24:26 · 1031 阅读 · 2 评论