数据结构
文章平均质量分 61
数据结构
说文科技
同名公众号【说文科技】,做有态度的研究。
展开
-
python基础算法大合集
作为一名算法工程师,仅仅使用C++写代码是远远不够的,这里便总结了使用python 解决常见的数据结构和算法问题,诸如排序,搜索,动态规划以及树图等。原创 2021-09-06 20:22:15 · 295 阅读 · 1 评论 -
使用python定义单链表
使用python完成单链表的设计,主要实现尾插法和遍历输出单链表的方法。原创 2021-08-31 23:00:17 · 3857 阅读 · 0 评论 -
【算法竞赛刷题模板13】 单调栈
单调栈的含义,常见的使用单调栈解决的相关模板例题原创 2020-04-21 12:28:25 · 785 阅读 · 0 评论 -
判断二叉树是否是平衡二叉树【C++版】
判断二叉树是否是平衡二叉树【C++版】1.题意给出一个BST的先序遍历序列,你需要判断这个BST是否是平衡二叉树。2.分析step 1: 根据BST的先序序列,我们可以构建一棵完整的BSTstep 2:根据得到的BST,我们可以使用递归的手法检查这棵树是否是一棵平衡二叉树,递归的思想如下:递归查找每个根节点的左子树的高度lLen,右子树高度rLen,然后判断这个abs(rLen-lL...原创 2019-05-01 14:40:01 · 2531 阅读 · 0 评论 -
由先序和中序序列构建一棵二叉树【C++版】
构建树的方法最后返回的结果是当前建树得到的根节点。主要的思想是递归建树。本题是锻炼递归编程和树结构的良好习题。原创 2019-04-30 20:41:37 · 5557 阅读 · 6 评论 -
由后序序列和先序序列得到二叉树
由后序序列和先序序列得到二叉树1.题意学过数据结构的都知道,由后序序列和先序序列可以得到二叉树,但是得不到唯一的二叉树。但是如何使用后序和先序得到一棵二叉树呢?这是一个比较有意思的话题。2.分析2.1 前提知识后序序列postOrder:遍历的顺序是LRD,分别代表左子树,右子树,根,意思就是对于一棵树,始终是先输出左子树的部分,再输出右子树的部分,再输出根。这对于树的任何一个子树都是...原创 2019-04-30 19:44:05 · 2051 阅读 · 0 评论 -
如何求出两个数组中的所有公共元素
如何求出两个数组中的所有公共元素?【updating…】这里我主要讲一下我自己的想法,欢迎各位同学留言。1.方法11.1 基本思想step 1:先将两个数组从小到大排序,step 2:接着使用一个while循环,找出其中的公共元素,这样得到的时间复杂度是 O(maxn(m,n))。1.2 代码实现略...原创 2019-02-04 11:30:26 · 5039 阅读 · 0 评论 -
数据结构之哈希详解
数据结构之哈希详解【updating…】1.什么是哈希?2.如何设计哈希函数?3.哈希冲突?怎么解决哈希冲突可以说是哈希结构中最重要的话题了。即使一个哈希函数设计的很好,但是仍然避免不了元素冲突的产生,那么该如何解决哈希冲突呢?普通的解决哈希冲突的方法有:开放地址法拉链法下面详细地对解决哈希冲突的方法进行一个介绍。3.1 开发地址法...原创 2019-02-04 10:30:43 · 524 阅读 · 0 评论 -
根据中序遍历和先序遍历得到树的后序遍历
根据中序遍历和先序遍历得到树的后序遍历【updating…】1.题意如何根据一棵二叉树的先序遍历和中序遍历得到一个后序遍历?2.分析先序遍历:永远最先得到根节点,然后是左子树的节点,然后是右子树的节点。中序遍历:永远最先得到左子树的节点,然后是根节点,然后是右子树的节点结合上述的两个遍历的特点,即可得到一个完整二叉树。然后再后序遍历即可。下图给出了一个简单的示例:3.代码下面...原创 2019-02-02 20:49:35 · 1119 阅读 · 0 评论 -
链表经典算法
链表经典算法1.如何判断一个链表中是否存在环?方法一:这个遍历一遍应该就没有问题了。将所有节点统计为true,如果有重复的话,则会直接输出方法二:使用两个指针分别指向头结点,使指针A一次移动一位,指针B一次移动二位。如果两个指针有相交,则肯定有环,如果不相交,肯定无环。【这个可以使用赛道中两个跑步不同速度的选手来模拟】2.如何判断两个链表有共同的节点方法一:这个遍历一遍...原创 2018-06-11 22:15:39 · 1759 阅读 · 0 评论 -
如何将一个数组中的数据除重【高效率】
如何将一个数组中的数据除重【高效率】1.循环遍历,去除重复ArrayUtils类package InAction;import java.util.HashMap;public class ArrayUtils { public static void reduceRepetionOne(int [] array){ for(int i = 0; i...原创 2018-06-11 19:19:23 · 1817 阅读 · 0 评论 -
Java将递归转换成循环+栈实现
Java将递归转换成循环+栈实现1.命题:任何递归程序都可以转换成循环+栈实现。这个命题之所以成立,是因为,在计算机底层。递归就是用栈实现的。2.示例1:请用上述两种方式计算1到n的和。2.1代码TestRecursive 类【直接使用递归方法】package InAction;public class TestRecursive { public st...原创 2018-06-01 18:57:13 · 4218 阅读 · 0 评论 -
队列元素逆置算法
队列元素逆置算法原创 2017-04-17 19:05:30 · 10603 阅读 · 0 评论 -
判断栈操作序列是否合法
1.源码#include #include #define maxSize 1000int main(){ char str[maxSize]; int size = 0 ;//栈大小 scanf("%s",str); int i ; for(i = 0;i<strlen(str);i++){ if(str[i]=='I'){ size++; } if原创 2017-04-17 10:25:22 · 940 阅读 · 0 评论 -
链表操作之插入数据
链表插入操作原创 2017-04-16 22:20:48 · 8793 阅读 · 0 评论 -
删除链表中值为value的节点
链表操作(1)—删除特定值原创 2017-04-15 14:40:55 · 5238 阅读 · 4 评论 -
单链表的实现(C++)
使用C++实现单链表。其实我个人是推荐使用python的,C++版的单链表写着是真费劲儿,奈何已经上了贼船~原创 2020-03-01 01:04:45 · 762 阅读 · 1 评论