![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 81
follow_me!
机会只会留给有准备的人
展开
-
数据结构与算法十:字符串匹配-暴力匹配算法与KMP算法
一、字符串匹配常用算法:暴力匹配KMP算法二、暴力匹配:/** * @author:songwl * @Date:2022/2/15 22:03 * @Description: */public class Stringforcematch { public static void stringforcematch(String string1,String string2) { for(int i=0;i<string1.length();i++)原创 2022-02-17 09:53:17 · 870 阅读 · 0 评论 -
数据结构与算法八:分治算法(汉诺塔问题)
一、分治算法是什么?分治,顾名思义分而治之的意思,将复杂问题分解为简单的算法,各个击破。可分为分解、解决、合并三步,核心是如何分解。经典应用:二分搜索大整数乘法棋盘覆盖合并排序快速排序...原创 2022-02-14 17:27:36 · 387 阅读 · 0 评论 -
数据结构与算法五:哈希表-哈希函数设计原则-哈希冲突解决方案
一、哈希表的定义:二、哈希表举例:哈希函数就是映射关系三、哈希表应用举例:Leetcode上第387题:思路:通过s.charAt(i)-'a’将字符串中的字符映射成hash表,出现一次,在相应位置加一,左后找到第一个值为1的下标其他思路:当然此题解决方案很多,如一位一位的遍历亦可以四、哈希函数:将业务场景中的键转化为索引的过程称为哈希表的核心即使再优秀的哈希表也保证不了一个键对应一个不同的索引,这就是哈希冲突哈希函数设计原则:一致性(equals相等这hash值相等)、高效性原创 2022-01-29 21:44:03 · 2791 阅读 · 0 评论 -
数据结构与算法四:链表
一、链表(linked list)特性:链表是一种真正的动态的数据结构;(head、next)链表的数据结构属于线性结构,但是存储结构属于链式存储结构,非顺序存储,而是每个节点(node)里存下一个节点的指针使用链表可以克服数组需要预先知道数据大小的缺点,可以存储不同的数据类型,但是增加了指针域,空间开销大链表允许在链表任意位置插入node或移除node,但是不允许随机存取链表有很多类型:单向链表、双向链表及循环链表二、单链表定义:注:在《数据结构与算法分析》这本书中,线性结构用的是结点,而原创 2022-01-29 21:43:44 · 1599 阅读 · 0 评论 -
数据结构与算法三:栈和队列
一、栈和队列的特性:受限的数据结构队列(Queue):先进先出 FIFO 【优先队列可以插队】栈(Stack):后进先出 LIFO【系统的ctrl+z就是维护了一个栈stack】二、栈:1.栈的定义:2.栈的操作:将数组或链表进行约束就行了3.栈的应用:题目一:LeeCode第20题成功:遇到左括号入栈,遇到右括号就与栈顶匹配,匹配都成功,且最终栈里无数据,成功。失败:匹配不成功直接失败,如都匹配完后,栈里有剩余数据,则也失败。java版:三、队列:1.队列的定义:2.队原创 2022-01-28 21:17:23 · 558 阅读 · 0 评论 -
数据结构与算法二:数组
一维数组:一、概述:数组在内存中是一片连续的空间且元素相同可以快速根据索引定位到某元素但是新增、删除元素的时候需要移动元素位置,效率会变低二、数组的声明与创建:1.有两种声明方式:int[] a;int a[];2.创建方式有两种:int[] a1 = new int[5]; //直接指定大小int[] a2 ={1,2}; //有多少个value就有多大三、自定义数组:1.索引(数组索引)的语意:索引可以有语意,也可以无语意,有语意如下标就是学号,能快速定位某学生;如果原创 2022-01-28 21:16:47 · 955 阅读 · 0 评论 -
数据结构与算法一:时间频度和时间复杂度
1.内容:一、初识数据结构和算法:1.数据结构:数据结构:是相互之间存在一种或多种关系的数据元素的集合研究什么:数据的逻辑结构与物理结构以及它们之间的相互关系数据结构包括:线性结构和非线性结构1.1 线性结构:线性结构作为最常用的数据结构,其特点数据元素之间满足唯一的线性关系,每个数据元素(除第一个和最后一个外)只有一个直接前趋和一个直接后;线性结构拥有两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的,链式存储的线性表称为链表,原创 2022-01-28 21:16:02 · 2741 阅读 · 0 评论 -
数据结构:rbt红黑树
本文由浅入深介绍rbt红黑树一、数组:1.特点:内存连续,储存数据类型相同,查询快,增删慢2.为什么数组查询快,增删慢?查询快原因:因为内存连续,储存数据类型相同,所以每个数据占用的内存大小已知,可以根据起始位置与下标直接找到数据地址。增删慢原因:因为如果在数组中间增删数据,增删位置后面的数据都要向前或向后移动。二、链表:1.特点:内存不连续,储存数据类型可不相同,查询慢,增删快;2.为什么链表查询慢,增删快?查询慢原因:因为链表内存不连续,储存数据类型不同,无法通过下标直接定位到数原创 2022-01-13 22:42:40 · 1207 阅读 · 0 评论