
数据结构
文章平均质量分 71
水中加点糖
天下武功,无坚不破,唯快不破。https://github.com/puhaiyang
展开
-
使用bitmap实现可回收自增id
设计一个方法,每次调用返回一个自增id,同时需要满足以下要求。思路一:如果数据量非常小,直接使用一个集合存储已使用的id,使用循环和维护这个集合即可,但数据量大了,此方法返回数据的时间复杂度和占用的空间都是比较大的。思路二(推荐):建立一个(位图)bitmap,初始时bitmap的每一位都为0,0代表未使用,1代表已使用。每次请求获取id时从此bitmap的第0位开始返回一个未使用的index即可。以一个bitmap长度为65536的bitmap为例,示意图如下:初始时每一个bit位值都为0此时请求id返回原创 2023-11-09 22:47:14 · 368 阅读 · 0 评论 -
四叉堆在GO中的应用-定时任务timer
在数据量不太大的情况下,四叉堆的综合性能比二叉堆更优GO中time.timer和time.tick是使用四叉堆实现的time.tick的任务每次运行后会重新入堆,time.timer的任务每次运行后会从堆顶删除。原创 2023-10-15 18:22:39 · 501 阅读 · 0 评论 -
leetcode.44.通配符匹配问题-动态规划的两种写法
题目描述https://leetcode-cn.com/problems/wildcard-matching/给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。dp写法一class Solution { public boolean isMatch(String str, String pattern) { //定义s原创 2021-01-31 21:44:24 · 382 阅读 · 0 评论 -
记录一个面试算法题
这周在QQ群里看到一位朋友问了一个算法题,好像是他面试时遇到的,当时比较忙,大致看了下这个题目,一下子还没有想出来该怎么做,不过我觉得这个题目还是挺有意思的,把题目保存起来了,今天放假上午在图书馆学习时记起了这个题目,就思考了一会,有了思路。下午又有事耽搁去了,没有来将它做完,只得晚上这会稍微闲暇一点,就把上午的思路转换为代码来将它实现吧。题目:在命令行输入一个自然数N,实现如下面实例...原创 2019-04-05 22:10:37 · 810 阅读 · 0 评论 -
通过【lintCode-15全排列问题】学习DFS算法
这周发现毕业一年后自己对于技术的激情好像变得已经没有以前那么热爱与执着了,不再像以前那样每天想着都在学习新的技术,也不再因为每天没有学习到新的东西而会感到负罪感。也或许是我在大公司里由于长期没有压力的工作让我习惯了这样的日子,日复一日的轻松惯了导致的,但偶尔理智的我知道这种轻松的日子并不是我所想要的,至少现阶段不是。干IT这行还是不能堕落原地踏步,得向前看不能掉队,应紧紧跟上科技的浪潮。———...原创 2018-07-31 21:39:28 · 757 阅读 · 0 评论 -
lintCode-92.背包问题.dp解法
上周软考成绩出来了,当看到成绩的时候感觉还是有点小小的遗憾——差了5分。好几个周末都泡在图书馆里潜心修炼,尽管结果没能达到我的预期,但也让我发现了周末的新玩法-->泡图书馆,在通过以往几周的体验后发现其实这也是一种挺不错的选择方式,特别是炎热的夏天和寒冷的冬天,有免费的空调和安静的环境,哈哈。当然,对于上次的考试之所以挂了其中我的惰性和贪玩占了很大的因素,临近考试的那几个周末我还跑去各种玩的...原创 2018-07-22 18:15:03 · 1087 阅读 · 0 评论 -
用JAVA实现LL(1)文法语法分析程序
一个简单语法分析器的设计与实现实验目的:1.掌握语法分析的基本任务;2.掌握语法分析器的工作流程;3.能设计一个简单的语法分析器,并完成对指定句子的分析。实验内容: 给定一个LL(1)文法,编制语法分析程序,输出其预测分析表,用LL(1)预测分析程序实现其分析过程并输出分析过程和分析结果。主要实验内容:求出预测分析表,需要求解此文法的sel原创 2016-06-30 23:36:19 · 31447 阅读 · 25 评论 -
实验报告第三个 中缀表达式转后缀表达式 舞会问题
第一个:中缀表达式转后缀表达式这两个是我用STL写的,是为了方便代码的简单。第一个的代码如下:#include#include //用的是string来存放一个算式,然后再用str.at()遍历出每一个字符上的值。 所以这里面只能输入个位数的值,等空了再改#includeusing namespace std;void main(){ stack st; /原创 2014-12-13 01:06:46 · 1488 阅读 · 0 评论 -
数据结构 实验报告 第四个 二叉树相关操作
#include#define M 5//定义一个M,用来判断栈大小的using namespace std;int sum=0;//sum这个变量用来统计叶子结点个数typedef struct BTtree//定义二叉树结构体{ char data; struct BTtree * Lchild; struct BTtree * Rchild;}BT,*pBT;pBT原创 2014-12-22 14:54:26 · 1385 阅读 · 0 评论 -
线性表的相关操作 数据结构实验报告第二个
实验内容:约瑟夫(Joseph)问题的一种描述是:编号为1,2,……,原创 2014-10-14 19:51:29 · 1176 阅读 · 0 评论 -
数据结构实验报告第一个
#includeusing namespace std;typedef struct student{ char no[10]; char name[20]; int math; int eng; struct student *next;}student;void init_list(struct student * sHead){ sHead->next=NULL;原创 2014-09-28 00:56:32 · 747 阅读 · 0 评论 -
链表的简单插入及删除
#includeusing namespace std;typedef int elemtype;typedef struct Node { elemtype data; struct Node * pNext;}NODE,*PNODE;PNODE create_list(){ PNODE pHead=new NODE; PNODE pTail; pHead->pNext=原创 2014-09-24 11:05:21 · 890 阅读 · 0 评论 -
链表的创建及遍历
#include#includeusing namespace std;#define LEN 15typedef struct Node{ int data; struct Node * pNext;} NODE,*PNODE;NODE * create_list(){ int i=1; PNODE pHead =new NODE; // Ï൱ÓÚ PNODE原创 2014-09-23 09:03:17 · 697 阅读 · 0 评论 -
线性表简单操作
#include#define MAXSIZE 100#define OK 1#define ERROR 0using namespace std;typedef int ElemType;typedef struct { ElemType elem[MAXSIZE]; int last;}SeqList;void PrintList(SeqList L){ for(原创 2014-09-21 21:01:33 · 792 阅读 · 0 评论