![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
文章平均质量分 56
爱拍凯特
热爱开源,热爱新技术,热爱黑科技。
展开
-
跳跃表C++的一个实现
跳表是一种多层的链表,因为我们知道单链表的查询时间复杂度为接近O(log(n)),这个时间效率接近了平衡二叉树,而效率高些的二叉查找树,平衡二叉树,红黑树的实现相对困难,所以跳表就成为了一种高效且易实现的数据结构。至于具体的解释网上有很多的材料可以参考,下面是我从leetcode上发现的一个比较简单标准的跳跃表的c++实现,代码的优点是简单易懂,缺点是没有做优化,最差的情况下会导致跳跃表降低为单链...原创 2020-02-14 22:16:28 · 198 阅读 · 0 评论 -
遇到的算法题--03(N条电线)
我们有N条电线,每个电线两端是不同规格的接口(a/b/c/d....),同一根电线两端的接口规格可能是不同的,只有相同规格的接口才能把两根电线连接在一起,设计一个程序,判断所有这些电线是否能合并为一根长电线。输入:N行,每行是两个字符串,表示电线的规格,如a aa bb c输出:是否能拼接为一根电线解题思路:采用数学思想,找规律。已知N根线,则共有2N个端点,...原创 2019-07-01 11:57:46 · 385 阅读 · 2 评论 -
遇到的算法题--02(斗牛)
“斗牛”是一种热门的扑克游戏,每个人5张牌,其中A当1,JQK都当10。要求:从5张牌中选出3张牌(必须刚好3张),如果存在3张牌加起来是10或者20或者30,就称为“有牛”,否则就是“没牛”。有牛的情况下,剩余两张牌加起来除以10后:• 余数为0就是“牛牛”,是最大的一手牌。• 如果余数为9就是“牛九”,是第二大的,依次类推,“牛一”就是最小。• “有牛”都大于“没牛”。• 两人都是没牛...原创 2019-07-01 11:57:35 · 678 阅读 · 1 评论 -
遇到的算法题--01(取排序数组的重复元素)
现有两个从小到大排好序的int数组(每个数组自身没有重复元素)。请找出所有在这两个数组中都出现过的数。请写一个函数,输入为两个数组。思路简述:因为数组已经排好序,且没有重复数据。所以可以采用两个指针分别指向两个排序的数组num1、num2。然后当两个值相同的时候就存储下来同时将两个指针都向后移动,当num1较小时则该指针向后移动,当num2较小的时候则该指针向后移动,直到其中任何一个指针指...原创 2019-07-01 11:56:42 · 327 阅读 · 0 评论 -
python学习笔记--可迭代对象和迭代器的理解
首先,我们从简单的容器开始。容器:是一种把多个元素组织在一起的数据结构,其中的元素可以迭代获取,可以用in,not in,来判断是否存在容器中,这类数据结构的所有元素是存储在内存中的,像迭代器,生成器的数据元素只有一部分存在内存中。python中常见的容器:list/dequeset/fronzensetsdict/defaultdict/Ordereddict/Count原创 2018-01-05 21:47:15 · 953 阅读 · 0 评论 -
C++ 存储类的含义和区别
C++中有五种类型的存储类。存储类是管理对象的生存期、链接、内存位置的类型说明符。这些说明符放在需要修饰的变量类型前。autoregisterstaticexternmutable1、说明符的作用是用来定义变量/函数 的范围(可见性)和生命周期。2、以上五类可以分成两种:自动存储类和静态存储类。自动存储类包括auto、register,其他的是静态存储类。3、自原创 2017-01-10 21:43:40 · 3195 阅读 · 0 评论 -
惊群问题
惊群问题惊群问题是由于系统中有多个进程在等待同一个资源,当资源可用的时候,系统会唤醒所有或部分处于休眠状态的进程去争抢资源,但是最终只会有一个进程能够成功的响应请求并获得资源,但在这个过程中由于系统要对全部的进程唤醒,导致了需要对这些进程进行不必要的切换,从而会产生系统资源的浪费。 这种情况一般是accept或epoll_create在子进程中处于监听状态,也就是先创建子进程或者子线程原创 2016-05-06 10:54:02 · 5519 阅读 · 0 评论 -
EPOLL的用法和模型
1、epoll的用法既然epoll是一种IO多路复用技术,也就是管理大量的描述符的,那么这种机制既可以使用在服务端也可以使用在客户端。而在这两种使用方式下可能会有一些差距,但是差距并不大,毕竟作用是相同的。首先说一下epoll中常用的几个函数:int epfd = epoll_create(int size); 这个函数用于创建一个epoll描述符,同时他会创建红黑树原创 2016-05-28 16:45:38 · 604 阅读 · 0 评论 -
位示图用法的总结
今天在复习的过程中,遇到了海量数据处理问题,这种问题是一种常见的TOP K 问题,处理方法比较固定就是考虑两种情况,一种情况是内存中能够将数据全部存储下来,另一种情况是不能将数据全部存储下来。对于第一种情况,直接采用hash_map进行统计,然后通过堆排序进行建立一个K大小的堆,然后将数据存储到堆里,最终获取Top K。另一种情况的解决方式是先hash分治,然后对每份进行hash_map统计,原创 2016-07-24 19:03:38 · 11434 阅读 · 0 评论 -
两个基础知识点:自动装箱和拆箱,Final
自动装箱和自动拆箱自动装箱就是可以直接把一个基本数据类型的值赋值给一个包装类的实例。自动拆箱就是把包装类的实例转化为一个具体的基本数据类型。//////////////////////////////////////////////////////////////////////////////////////////////////////Final 修饰基本数据类型和引用数据类原创 2016-05-13 20:57:41 · 240 阅读 · 0 评论 -
对动态规划算法思想的一些理解
动态规划算法思想和分治法的思想是类似的,都是将问题的规模缩小,然后求解子问题,根据子问题来解决总问题,但是分治算法的子问题之间是相互独立的,因此在对子问题的求解过程中就产生了很多重复的计算,递归就是这种问题很典型的代表,究其原因就是对子问题的求解过程没有保留中间结果以便其他的求解问题使用,而动态规划问题将中间结果保留在数组中,每个状态都对应一个状态转移,而且动态规划思想和贪心算法思想也不同,就在于原创 2016-05-11 16:28:40 · 1347 阅读 · 0 评论