数据结构
文章平均质量分 94
红岸水滴
https://github.com/fenglei110
从孤独中寻找自由。
展开
-
I/O之随笔
开篇1. RocketMQ底层实现竟然是Netty?2. Kafka通讯采用基于tcp的socket方式,响应式模型,何为响应式模式?3. Redis的单线程是是采用什么样的IO实现?4. Netty的底层实现是基于NIO,和Linux系统底层NIO一样吗?5. 怎么理解阻塞式IO和非阻塞式IO?6. java的BIO、NIO、AIO区别?7. 那epoll和select又是什么?学习最好的方式就是带着问题思考,下面一起分析下。Linux系统五大IO模型什么是IO?原创 2021-03-17 23:23:39 · 138 阅读 · 1 评论 -
八皇后问题
前言中国有一句古话,叫做“不撞南墙不回头",生动的说明了一个人的固执,有点贬义,但是在软件编程中,这种思路确是一种解决问题最简单的算法,它通过一种类似于蛮干的思路,一步一步地往前走,每走一步都更靠近目标结果一些,直到遇到障碍物,我们才考虑往回走。然后再继续尝试向前。通过这样的波浪式前进方法,最终达到目的地。当然整个过程需要很多往返,这样的前进方式,效率比较低下。此为递归算法。接下来的这个问题也和...原创 2019-05-31 15:33:37 · 487 阅读 · 0 评论 -
LeeCode 104and110 python
104. 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。# Definition for a binary tree n...原创 2018-12-06 21:58:00 · 433 阅读 · 0 评论 -
LeetCode 二叉树的高度和深度问题
二叉树的最大深度对于深度和高度问题,总结一下。首先定义一颗二叉树,初始化一些方法# Definition for a binary tree node.class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None ...原创 2018-12-05 22:24:55 · 813 阅读 · 0 评论 -
AVL树和伸展树
在树的结构中,一个最重要的用途是用作二叉搜索树。接下来使用搜索树结构有效的实现有序映射。二叉搜索树的结构特性产生的最重要的结果是搜索算法。在search中,搜索一次下降一层,树高为h,每一个节点的搜索时间为O(1)(至于为什么是O(1),则涉及到哈希表的设计),则最坏情况下总的搜索时间为O(h)。基于二叉搜索树,提供了聊两种性能更高的搜索树算法。分别是AVL树,伸展树。当然还有红黑树和多路...原创 2018-12-08 16:30:08 · 1439 阅读 · 0 评论 -
LeetCode 102and107 Python
二叉树的层次遍历(广度优先搜索) 20 / \ 12 22 / / \ 3 21 25 / \ 33也就是说这样一棵树遍历的结果为:第一种结果:[ [33], [3, 21, 25], [12, 22], [20]]第二种结果:[...原创 2018-12-04 23:25:16 · 490 阅读 · 0 评论 -
细聊排序算法
常见的排序算法:选择排序,插入排序,冒泡排序,快速排序,堆排序,桶排序,基数排序。一个一个来聊吧。目录冒泡排序:选择排序:插入排序:归并排序:快速排序:堆排序:桶排序和基数排序:总结冒泡排序:'''冒泡排序它重复地遍历要排序的队列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数...原创 2018-12-02 20:48:32 · 704 阅读 · 0 评论 -
LeetCode 105and106 二叉树 python
从前序与中序遍历序列构造二叉树首先要知道,先序遍历的顺序为[ 左、中、右 ],中序遍历的顺序为[ 中、左、右 ]。对于一棵树: 3 / \ 2 5 / \ 4 6中序遍历的结果是[3,2,5,4,6] ,记住每颗子树都是从根开始。左序遍历的结果是[2,3,4,5,6], 记住每棵树...原创 2018-12-04 21:52:03 · 888 阅读 · 0 评论 -
细聊模式匹配算法
在经典模式匹配问题中,我们经常给出了长度为n的文本字符串T和长度为m的模式字符串P,并希望明确是否P是T的一个子串。如果是,则希望找到P在T中开始位置的最低索引 j,比如 T[ j: j+m] 和P匹配,或者从T中找到所有P的开始位置索引。模式匹配问题在Python的str类中有许多内在的行为,例如 p in T,T.find(P),T.index(P),以及T.count(P),这些行为是更...原创 2018-12-02 13:59:57 · 1427 阅读 · 0 评论 -
leetcode 有趣的电影 python
某城市开了一家新的电影院,吸引了很多人过来看电影。该电影院特别注意用户体验,专门有个 LED显示板做电影推荐,上面公布着影评和相关电影描述。作为该电影院的信息部主管,您需要编写一个 SQL查询,找出所有影片描述为非 boring (不无聊) 的并且 id 为奇数 的影片,结果请按等级 rating 排列。 例如,下表 cinema:+---------+-----------+----------...原创 2018-06-25 23:11:37 · 264 阅读 · 0 评论 -
leetcode 交换工资 python
给定一个 salary表,如下所示,有m=男性 和 f=女性的值 。交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求使用一个更新查询,并且没有中间临时表。例如:| id | name | sex | salary ||----|------|-----|--------|| 1 | A | m | 2500 || 2 | B | f |...原创 2018-06-25 22:47:45 · 397 阅读 · 0 评论 -
leetcode 查找重复的电子邮箱 python
编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。示例:+----+---------+| Id | Email |+----+---------+| 1 | a@b.com || 2 | c@d.com || 3 | a@b.com |+----+---------+根据以上输入,你的查询应返回以下结果:+---------+| Email |+-...原创 2018-06-25 21:40:43 · 680 阅读 · 0 评论 -
leetcode 两数之和 II - 输入有序数组 python
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], target = 9...原创 2018-06-26 10:44:22 · 631 阅读 · 0 评论 -
我会编程,学习数据结构和算法做啥?
个人认为数据结构是编程最重要的基本功没有之一!刚开始学习编程时有一种误解,会编程就行,研究什么数据结合啊?《数据结构》是计算机专业的一门必修课, 学习时,觉得用处不大, 还不如学个java,python来的直接一点,根本就没好好学。等到工作了以后做业务系统开发,发现根本就用不到那些书中的讲的二叉树、图、排序算法, 更加觉得这门课是在浪费时间了。前段时间又重新复习数据结构,询问了些大牛,才发现这种想...原创 2018-04-23 18:30:58 · 1609 阅读 · 0 评论 -
最基础算法(二叉树、二分法、链表、斐波那契)
翻书问题或者走台阶问题:共有n个台阶,每次只能上1个台阶或者2个台阶,共有多少种方法爬完台阶。共有n页书,每次只能翻1页或者2页书,共有多少种方法翻完全书。# f(n)为翻完全书的方法# 递归写法def f(n): if n == 1: return 1 if n == 2: return 2 if n > 2: r...原创 2018-06-09 17:34:24 · 906 阅读 · 0 评论 -
基础算法(栈、队列、排序)
栈# 定义一个栈(FILO)class Stack(object): def __init__(self): self.stack = [] def pop(self): if self.is_empty(): return None else: return self.stack.p...原创 2018-06-11 18:09:05 · 774 阅读 · 0 评论