随笔分类 -  数据结构和算法

摘要:问题描述 有一个连续的int数组,数组中的数据升序排序,数组中的数据不唯一,有重复数据,要求在数组中查找指定值为target的数据,返回target最小的下标,如果找到返回其最小的下标,如果没有找到,返回-1, 要求用 用二分查找的方式解决上述问题, 要求时间复杂度为Olog(n),空间复杂度为O( 阅读全文
posted @ 2022-03-03 11:58 恋恋风辰 阅读(90) 评论(0) 推荐(0) 编辑
摘要:最长回文串 字符串abcbada最长的回文串为abcba,最长回文串保证首尾字符相同,并且去除首尾后的子串也是回文串,如bcb。 根据这个规律,ab就不是回文串因为首尾不同。abcbada也不是回文串,因为即使首尾相同,其子串bcbad不是回文串,所以abcbada也不是回文串。 动态规划 可以通过 阅读全文
posted @ 2022-01-12 15:47 恋恋风辰 阅读(105) 评论(0) 推荐(0) 编辑
摘要:递归反转 本文介绍递归反转单链表,和之前的循环遍历反转单链表方式略有不同,递归的方式要写出推到递归公式。并且在递归的同时修改指针的指向。 先定义Node节点 class Node { public: Node(int dt, Node *nt = nullptr) : data(dt), next( 阅读全文
posted @ 2022-01-07 17:06 恋恋风辰 阅读(130) 评论(0) 推荐(0) 编辑
摘要:红黑树是高效查找和插入删除的数据结构,用途很广泛,如epoll的消息注册机制,stl中的map都采用了红黑树。## 红黑树的主要特性:`(1)每个节点或者是黑色,或者是红色。``(2)根节点是黑色。``(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空的叶子节点!]``(4)如果一 阅读全文
posted @ 2017-10-30 17:05 恋恋风辰 阅读(938) 评论(0) 推荐(0) 编辑
摘要:最近复习了二叉搜索树的基础知识,总结下,然后用C++实现二叉搜索树的插入,删除,查找等,也是为了实现红黑树做铺垫。一个二叉搜索树结构如下,父节点做子树都比父节点小,右子树都比父节点大。 插入节点12后,如下 删除的情况,删除节点A,判断节点A是否为叶子节点,如果是叶子结点直接删除即可。如果叶子A有且 阅读全文
posted @ 2017-10-09 15:08 恋恋风辰 阅读(399) 评论(0) 推荐(0) 编辑
摘要:大根堆的定义:1 大根堆是一个大根树 2 大根堆是一个完全二叉树 所以大根堆用数组表示是连续的,不会出现空白字段。 对于大根堆的插入 对于大根堆的插入,可以在排序前确定大根堆的形状,可以确定元素5从位置6插入,那么比较元素5和位置3的元素2, 元素5比元素2大,将2下移。接着比较元素5和元素20,一 阅读全文
posted @ 2016-07-13 16:17 恋恋风辰 阅读(2627) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示