数据结构和算法
文章平均质量分 63
恋恋风辰
编程是我的使命,秃头是我的勋章。博客地址: https://llfc.club/ 哔哩视频教程: https://space.bilibili.com/271469206
展开
-
二分查找升序序列
问题描述有一个连续的int数组,数组中的数据升序排序,数组中的数据不唯一,有重复数据,要求在数组中查找指定值为target的数据,返回target最小的下标,如果找到返回其最小的下标,如果没有找到,返回-1, 要求用 用二分查找的方式解决上述问题, 要求时间复杂度为Olog(n),空间复杂度为O(1)举例 数组nums = [0,1,1,3,3,4], 查找target为1的数据最小的下标则返回1。如果查找target为100,则返回-1解决思路用二分查找解决上述问题,用一个数组中间的数据和targ原创 2022-03-03 12:01:10 · 416 阅读 · 0 评论 -
求最长回文串的长度
最长回文串字符串abcbada最长的回文串为abcba,最长回文串保证首尾字符相同,并且去除首尾后的子串也是回文串,如bcb。根据这个规律,ab就不是回文串因为首尾不同。abcbada也不是回文串,因为即使首尾相同,其子串bcbad不是回文串,所以abcbada也不是回文串。动态规划可以通过动态规划解决字符串的最大回文串的长度问题,其根本思路是依次列举出长度为1~n的回文串,最后返回最大长度n即可。动态规划的思路在于找出推导公式:1 首尾元素不同,则不是回文串。2 首尾元素相同,且去除首尾原创 2022-01-12 15:44:48 · 1868 阅读 · 0 评论 -
递归反转单链表
递归反转本文介绍递归反转单链表,和之前的循环遍历反转单链表方式略有不同,递归的方式要写出推到递归公式。并且在递归的同时修改指针的指向。先定义Node节点class Node{public: Node(int dt, Node *nt = nullptr) : data(dt), next(nt) {} Node() = default; int data; Node *next;};Node节点构成的链表如下图基本思路是实现recursive_rever原创 2022-01-07 17:05:14 · 1365 阅读 · 0 评论 -
双链表实现LRU算法
链表所谓链表就是一个节点指向另一个节点的数据结构,像一条链子把每个节点连接起来。如果一个节点既指向了后面的节点,也指向了前面的节点,这些节点就构成了双向链表。我们先定义这个节点结构class NodeLRU{public: NodeLRU(int v) : val(v), prev(nullptr), next(nullptr) {} int val; NodeLRU *prev; NodeLRU *next;};val为节点的数据域表示节点存储的数值p原创 2021-12-30 15:12:39 · 1101 阅读 · 0 评论