数据结构与算法
主要夯实计算机专业中的基础数据结构和算法
敏叔V587
吃货程序员一枚
展开
-
五子棋与稀疏数组
前言稀疏数组是我们一开始学数据结构的时候第一次有点味道的小算法了,大部分的人第一次是交代在这里。这是因为,这个需求来自于我们比较喜欢的五子棋小游戏。这个游戏主要是当年有个东西叫做电子词典,也不知道是啥规则,清一色都有这个游戏。稀疏数组在应用在五子棋上面的一个原因是,落子不多的话格子是很少,但是我们定义全局的时候其实是一个二维数组。说正事棋盘中的代码其实是一个数组,但是里面会附带很多0元素...原创 2020-03-14 11:37:45 · 354 阅读 · 0 评论 -
二分查找的一种改进-拉格朗日插值查找法
引言二分查找算法是比较早期时候接触到的算法,这种算法有两个要求,一个是要求是顺序存储结构,其实就是数组,另一个是要查找的表要按照大小有序排列。代码讨论轻量级查找我们先看下最基础的查找,基本思想就是从一个数组上面挨个找,找到了就返回: public static int find_v1(int[] arr, int targetValue) { int targetInde...原创 2020-01-29 19:01:51 · 498 阅读 · 0 评论 -
腾讯一面之气球游戏
题目原文小Q在进行射击气球的游戏,如果小Q在连续T枪中打爆了所有颜色的气球,将得到一只QQ公仔作为奖励。(每种颜色的球至少被打爆一只)。这个游戏中有m种不同颜色的气球,编号1到m。小Q一共有n发子弹,然后连续开了n枪。小Q想知道在这n枪中,打爆所有颜色的气球最少用了连续几枪?原始连接思路与解答这个题目一开始是琢磨题目了半天,后面自己整理了一下,基本就是不断开枪,开枪之后数字就代表颜色编号,因为颜色可以重复的,题目是问里面连续中枪的时候可以覆盖全部的颜色。直观上来说其实就是需要连续的一段数原创 2020-08-15 14:28:04 · 349 阅读 · 0 评论 -
头条一面之大数求和
题目描述大数求和其实是leetcode的415号题目,基本题目计算数据会比较大,一锅炖不下~题解因为数据是比较大的,所以的话输入就变成了字符串,两个字符串的数值内容求和,我们可以按照我们的竖式加法,然后碰到了进位的时候需要处理进位。这里的关键点其实是取数的操作,字符串的12345其实最后一位才是我们数值的第一位,其实就是反着来的。而且999的话高位其实没那么多位,我们可以补0操作。字符串999需要位数对齐,则变成了00999,基于此思路,我们定义一个函数,用于取特定位置上的数字,如果没有这个位原创 2020-08-15 14:05:52 · 225 阅读 · 0 评论