
数据结构
Drogon Brother
这条路 我并不寂寞
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
10.4 Trie字典树前缀查询
10.4 Trie字典树前缀查询(1) Trie字典树的Java语言实现案例// 在Trie树中查找是否存在某个prefix前缀的单词,即实现前缀树public boolean isPrefix(String prefix)package com.wwl.trie;import java.util.TreeMap;/*** Trie树性能高于BST(二分搜索树)* Trie时间复杂度:O(w) 与单词长度有关* BST时间复杂度:O(logn) 与存储的数...原创 2020-05-30 14:12:27 · 600 阅读 · 0 评论 -
10.5 Trie字典树和简单模式匹配
10.5 Trie字典树和简单模式匹配Tip:本博客内容是通过学习慕课网bobo老师视频做的笔记总结,不用于任何商业用途,只用于帮助更多技术爱好者。(1) Leetcode题目(添加与搜索单词 - 数据结构设计第211号题目)https://leetcode-cn.com/problemset/all/?search=211设计一个支持以下两种操作的数据结构:void addWord(word)bool search(word)search(word)可以搜索...原创 2020-05-24 23:09:19 · 663 阅读 · 1 评论 -
10.3 Trie字典树查询
10.3 Trie字典树查询Tip:本博客内容是通过学习慕课网bobo老师视频做的笔记总结,不用于任何商业用途,只用于帮助更多技术爱好者。(1) Trie字典树的Java语言实现案例// 判断Trie树中是否存在某个单词public boolean contains(String word)package com.wwl.trie;import java.util.TreeMap;/*** Trie树性能高于BST(二分搜索树)* Trie时间复杂度:O(w..原创 2020-05-24 22:25:21 · 306 阅读 · 0 评论 -
10.2 Trie字典树基础
10.2 Trie字典树基础Tip:本博客内容是通过学习慕课网bobo老师视频做的笔记总结,不用于任何商业用途,只用于帮助更多技术爱好者。(1) Trie字典树的Java语言实现案例package com.wwl.trie;import java.util.TreeMap;public class Trie { private class Node { private boolean isWord; private TreeMap<Cha原创 2020-05-24 16:04:55 · 322 阅读 · 0 评论 -
10. 什么是Trie字典树
10.1 什么是Trie字典树Tip:本博客内容是通过学习慕课网bobo老师视频做的笔记总结,不用于任何商业用途,只用于帮助更多技术爱好者。(1) 背景发生在微软的一个真实案例:在一个古老的手持设备中实现一个通讯录功能,但是当时的手持设备的芯片运算能力是非常低的,所以他们发现当通讯录中记录的条目非常多的时候,搜索通讯录中的内容是非常慢的。但是这个问题是被微软的一个实习生解决了。其实他解决的方式非常简单,他就是使用了这种Trie数据结构来解决的。(2) 什么是Trie树..原创 2020-05-24 15:59:04 · 373 阅读 · 0 评论 -
Java自定义泛型数组
1、定义泛型数组相关概念(1)泛型数组让我们可以存放任何数据类型(2)存放的类型不可以是基本数据类型,只能是类对象 boolean、byte、char、short、int、long、float、double(3)每个基本数据类型都有对应的包装类 Boolean、Byte、Char、Short、Integer、Long、Float、Double...原创 2019-02-13 23:31:05 · 5436 阅读 · 0 评论 -
自定义栈的基本实现
自定义栈的基本实现1、自定义stack方法2、基于动态数组实现自定义stack3、动态数组实现public class Array<E> { // 定义数组变量,data.length表示数组容量capacity private E[] data; // 定义数组中存放数据大小 private int size; // 有...原创 2019-02-18 23:27:14 · 371 阅读 · 0 评论 -
栈和栈的应用:撤销操作和系统栈
栈和栈的应用:撤销操作和系统栈1、栈相关概念栈是一种线性结构 相比数组,栈对应的操作是数组的子集 只能从一端添加元素,也只能从一端取出元素 这一端称为栈顶2、栈数据结构类型3、栈的应用(1)撤销操作(2)系统栈A2表示函数A第二行B2表示函数B第二行函数A()调用函数B(),把A2压入栈底,函数B()调用函数C(),把B2压栈,当函数...原创 2019-02-18 22:28:12 · 1134 阅读 · 0 评论 -
自定义数组(包含,搜索,删除方法)
包含,搜索和删除1、数组包含方法// 查找数组中是否存在元素epublic boolean contains(int e) { for (int i = 0; i < size; i++) { if (data[i] == e) { return true; } } return false;} ...原创 2019-02-12 23:05:13 · 739 阅读 · 0 评论 -
均摊复杂度和防止复杂度的震荡
均摊复杂度和防止复杂度的震荡resize的复杂度分析 // 数组扩容 private void resize(int newCapacity){ E[] newData = (E[]) new Object[newCapacity]; for (int i = 0; i < size; i++) { new...原创 2019-02-17 19:45:40 · 335 阅读 · 0 评论 -
学习数据结构(和算法)到底有没有用?
学习数据结构(和算法)到底有没有用?1、学习数据结构有用的观点一般从事底层工具或者框架开发的同学使用数据结构和算法比较多,这部分同学接触数据结构和算法比较多,他们会认为学习数据结构是有用的。 下图展示的是各种开发工具及操作系统,这些开发工具及操作系统底层都需要使用各种数据结构和算法 2、学习数据结构无用的观点因为有些同学在工作中主要是应用层面的开发,基本上很少会用到...原创 2019-01-27 19:17:10 · 2897 阅读 · 0 评论 -
数据结构编程环境搭建
数据结构编程环境搭建1、Java环境选择 2、Java 8官网下载Java 8目前是使用人数最多的版本,也是最稳定的版本。Oracle官网首页:https://www.oracle.com/index.html拉至网站最底部:点击Java for Developer最新显示下载版本为:Java 11在此页面寻找java 8下载:点击Java SE 8...原创 2019-01-27 19:27:22 · 785 阅读 · 0 评论 -
不要小瞧数组(数据结构-数组)
使用Java中的数组1、不要小瞧数组数组基础: 2、IntelliJ IDEA创建Java Project(1)File->New->Project…(2)Java->Project SDK->Next(3)Create project from template->Command Line App->Next...原创 2019-01-27 19:31:40 · 239 阅读 · 0 评论 -
基于Java数组,二次封装属于我们自己的数组
基于Java数组,二次封装属于我们自己的数组1、数组索引是否有语义数组索引是否存在语义是根据具体业务场景来的,比如可以使用索引表示学生的学号 2、数组那些事(1)数组最大的优点数组最大的优点:快速查询。scores[2];数组最好应用于“索引有语义”的情况; (2)数组索引无语义场景但并非所有有语义的索引都适合于数组。比如:身份证号:45030119...原创 2019-01-27 20:21:44 · 285 阅读 · 0 评论 -
向数组中添加元素
向数组中添加元素1、数组末尾添加元素(1)向数组末尾添加元素模型图(2)向数组末尾添加元素代码public class Array { // 定义数组变量,data.length表示数组容量capacity private int[] data; // 定义数组中存放数据大小 private int size; // 有参构造方法,传入数...原创 2019-01-27 23:28:16 · 10913 阅读 · 0 评论 -
数组中查询元素和修改元素
数组中查询元素和修改元素1、重写数组中toString()方法// 重写父类toString()方法@Overridepublic String toString() { StringBuilder sb = new StringBuilder(); sb.append(String.format("Array: size = %d , capacity = %d\n", ...原创 2019-01-28 00:16:00 · 1371 阅读 · 0 评论 -
Java自定义动态数组
Java自定义动态数组1、静态数组向动态数组转变(1)静态数组,数组空间固定长度这个数组空间总长为4,如果此时新插入一个数据就会报数组空间不足 (2)静态数组如何转变成动态数组第一步:创建一个空间是data数组两倍的newData数组(扩容);第二步:把data数组中的元素全部赋值到newData数组; 2、数组扩容程序// 数组扩容priv...原创 2019-02-15 00:38:33 · 13301 阅读 · 0 评论 -
栈的另一个应用:括号匹配
栈的另一个应用:括号匹配1、LeetCode官网美网:https://leetcode.com/ 国服:https://leetcode-cn.com/ 我这里使用的是国服来测试的。 2、LeetCode找到20号题目(1)搜索题目(2)查看20号题目(3)本地编辑器解决20号题目import java.util.Stack;class Solu...原创 2019-02-21 23:10:44 · 2524 阅读 · 0 评论 -
关于LeetCode的更多说明
关于LeetCode的更多说明1、LeetCode如何使用多个类或接口提交2、学习LeetCode方法论不需要达到完美主义,掌握好这个度; 学习本着自己的目标去; 首要目标:理解数据结构和算法底层原理;如果感兴趣的童鞋,可以观看我下一篇博客:数组队列...原创 2019-02-21 23:28:37 · 228 阅读 · 0 评论 -
数组队列
数组队列1、队列相关概念队列是一种线性结构 相比数组,队列的操作是数组的子集 只能从一端(队尾)添加元素,只能从另一端(队首)取出元素 2、队列原理 队列是一种先进先出的数据结构(先到先得) Fist In First Out(FIFO) 队首取出元素,队尾添加元素。 3、队列实现(1)队列需要实现的方法...原创 2019-02-22 00:43:33 · 572 阅读 · 0 评论 -
简单复杂度分析
1、简单时间复杂度分析(1)时间复杂度表示方式 O(1),O(n),O(lgn),O(nlogn),O(n^2) (2)大O简单定义(非数学领域) 大O描述的是算法运行时间和输入数据之间的关系 (3)简单程序时间复杂度分析既然算法和N呈线性关系,为什么要用大O,叫做O(n)?忽略常数。实际时间复杂度:T = c1*n + c2;...原创 2019-02-17 12:26:49 · 365 阅读 · 0 评论 -
数据结构概述
数据结构概述1、为什么要学习数据结构(1)数据结构是所有计算机专业的同学必学的课程;(2)数据结构研究的是数据如何在计算机中进行组织和存储的,使得我们可以高效的获取数据或者修改数据; 2、数据结构分类(1)线性结构 数组;栈; 队列;链表; 哈希表……(2)树结构 二叉树;二分搜索树; ...原创 2019-01-26 20:59:43 · 369 阅读 · 1 评论