
Java数据结构
文章平均质量分 62
Java数据结构
graceyun
低头赶路,敬事如仪,自知其心,其路则明~
展开
-
Java数据结构学习DAY3——链表(一)
Java数据结构学习DAY3——链表原创 2021-04-13 15:51:48 · 152 阅读 · 0 评论 -
Java数据结构学习DAY8——搜索树和哈希表(三)
哈希表目录6. 哈希表6.1 概念6.2 冲突-概念6.3 冲突-避免6.4 冲突-避免-哈希函数设计6.5 冲突-避免-负载因子调节6.6 冲突-解决6.7 冲突-解决-闭散列6.8 冲突-解决-开散列/哈希桶6.10 开散列/哈希桶的实现6.11 性能分析6.12 和 java 类集的关系6. 哈希表6.1 概念顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O(log2Nlog_原创 2021-04-12 11:39:21 · 186 阅读 · 0 评论 -
Java数据结构学习DAY8——搜索树和哈希表(二)
5. 搜索树5.1 概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树 int a [] = {5,3,4,1,7,8,2,6,0,9};5.2 操作-查找代码实现 //1、查找 //空树用 null 表示 BinaryNode root = n原创 2021-04-12 09:46:33 · 106 阅读 · 0 评论 -
牛客网题目—— [编程题]旧键盘 (20)
1、题目描述链接:牛客网[编程题]旧键盘 (20)旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。输入描述:输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括大、小写)、数字0-9、以及下划线“_”(代表空格)组成。题目保证2个字符串均非空。输出描述:按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题原创 2021-03-29 17:18:35 · 251 阅读 · 0 评论 -
力扣题目——692. 前K个高频单词
1. 题目描述前K个高频单词给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。2. 代码实现class Solution { public List<String> topKFrequent(String[] words, int k) { // 1. 先统计每个单词出现的次数 Map<String, Integer> map = new Hash原创 2021-03-29 17:10:02 · 301 阅读 · 0 评论 -
力扣题目——771. 宝石与石头
1. 题目描述宝石与石头给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。2. 力扣代码实现import java.util.HashSet;import java.util.Set;class Solution { public int numJewelsInStones(Stri原创 2021-03-29 16:53:07 · 259 阅读 · 0 评论 -
力扣题目——138. 复制带随机指针的链表)(Java实现)
1.题目描述复制带随机指针的链表给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的深拷贝。深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。例如,如果原链表中有 X 和 Y 两个节点,其中 X.rando原创 2021-03-29 16:07:44 · 130 阅读 · 0 评论 -
力扣题目——136. 只出现一次的数字(java 实现)
力扣题目——136. 只出现一次的数字(java 实现)题目描述:只出现一次的数字。给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?实现代码import java.util.HashMap;import java.util.Map;public class TestSetAndMap { //1.找只出现一次的数字 public int singleN原创 2021-03-29 10:58:12 · 185 阅读 · 0 评论 -
Java数据结构学习DAY8——搜索树和哈希表(一)
搜索树和哈希表Map和Set1.搜索1.1 概念及场景Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。以前常见的搜索方式有:1)直接遍历,时间复杂度为O(N),元素如果比较多效率会非常慢;2)二分查找,时间复杂度为O(log2N)O(log_2N)O(log2N),但搜索前必须要求序列是有序的.上述排序比较适合静态类型的查找,即一般不会对区间进行插入和删除操作了,而现实中的查找比如:1)根据姓名查询考试成绩2)通讯录,即根据姓名查询联系方式原创 2021-03-29 10:48:09 · 312 阅读 · 7 评论 -
Java数据结构学习DAY7——排序
Java数据结构学习DAY7——排序1. 概念1.1 排序排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。平时的上下文中,如果提到排序,通常指的是排升序(非降序)。通常意义上的排序,都是指的原地排序(in place sort)。1.2 稳定性(重要)两个相等的数据,如果经过排序后,排序算法能保证其相对位置不发生变化,则我们称该算法是具备稳定性的排序算法。2. 七大基于比较的排序2.1. 插入排序3.1 直接插入排序-原理整个区间被分为有序区原创 2021-03-25 14:40:19 · 140 阅读 · 0 评论 -
Java数据结构练习——Java实现调整数组顺序使得奇数位于偶数之前。调整之后,不关心大小顺序。
题目奇数位于偶数之前Java代码实现package Exercise;public class ArraryOrder { //调整数组顺序使得奇数位于偶数之前。调整之后,不关心大小顺序public static void main(String[] args) { int[] arr = {1,2,3,4,5,6,7,8,9}; for (int i = 0; i < arr.length-1; i++ ) { for (i原创 2021-03-25 11:05:16 · 166 阅读 · 0 评论 -
Java数据结构学习DAY5——二叉树(四)
1.6二叉树最大深度题目描述:力扣代码实现在这里插入代码片结果1.7平衡二叉树题目描述:力扣代码实现在这里插入代码片结果1.8 对称二叉树题目描述:力扣代码实现在这里插入代码片结果2、 进阶面试题二叉树的构建及遍历。二叉树的分层遍历 。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先 。二叉树搜索树转换成排序双向链表。根据一棵树的前序遍历与中序遍历构造二叉树。根据一棵树的中序遍历与后序遍历构造二叉树。二叉树创建字符串。3、原创 2021-03-22 20:06:21 · 308 阅读 · 0 评论 -
Java数据结构学习DAY5——二叉树(三)
Java数据结构学习DAY5——二叉树(三)1、 基础面试题二叉树的前序遍历。二叉树中序遍历 。二叉树的后序遍历 。检查两颗树是否相同。另一颗树的子树。二叉树最大深度。判断一颗二叉树是否是平衡二叉树。对称二叉树。2、 进阶面试题二叉树的构建及遍历。二叉树的分层遍历 。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先 。二叉树搜索树转换成排序双向链表。根据一棵树的前序遍历与中序遍历构造二叉树。根据一棵树的中序遍历与后序遍历构造二叉树。二叉树创建字符串。3、 前原创 2021-03-18 11:45:12 · 253 阅读 · 0 评论 -
Java数据结构学习DAY5——二叉树(二)
Java数据结构学习DAY5——二叉树(二)1、 二叉树的基本操作// 前序遍历void preOrderTraversal(Node root);// 中序遍历void inOrderTraversal(Node root);// 后序遍历void postOrderTraversal(Node root);// 遍历思路-求结点个数static int size = 0;void getSize1(Node root);// 子问题思路-求结点个数int getSize2原创 2021-03-18 09:24:41 · 146 阅读 · 0 评论 -
Java数据结构学习DAY5——二叉树(一)
Java数据结构学习DAY5——二叉树1. 树型结构(了解)1.1 概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:有一个特殊的节点,称为根节点,根节点没有前驱节点除根节点外,其余节点被分成M(M > 0)个互不相交的集合T1、T2、…、Tm,其中每一个集合Ti (1 <= i <= m) 又是一棵与树类似的子树。每棵子树的根节点有且只有一个前驱,原创 2021-03-16 16:41:38 · 636 阅读 · 0 评论 -
Java数据结构学习DAY2——顺序表
Java数据结构———顺序表1. 认识线性表和顺序表线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式储存。2. Java中的 List 和 ArrayListCollection:元素集合List: 线性表ArrayList: 顺序表// 为了便于理原创 2021-03-15 21:17:48 · 175 阅读 · 0 评论 -
Java数据结构学习DAY4——栈和队列(一)
Java数据结构——栈和队列1. 栈(Stack)1.1 概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据在栈顶。1.2实现(相对来说,顺序表的实现上要比链表更为简单一些)利用顺序表实现,即使用尾插 + 尾删的方式实现package ja原创 2021-03-11 11:27:50 · 144 阅读 · 0 评论 -
扑克牌程序
Java实现 扑克牌程序1. 创建一幅牌1.1 新建一个 Card 类Card.javapackage Java_0131;//一张扑克牌public class Card { //花色 public String suit; //点数 使用 String 更合理 JQKA public String rank; // 这里 alt + insert 可以直接构建方法。 public Card(String suit, String rank原创 2021-03-08 23:44:31 · 1749 阅读 · 0 评论 -
Java 数据结构 递归练习题(4)
Java实现 写一个递归方法,输入一个非负整数,返回组成它的数字之和代码package Java_0129;import java.util.Scanner;public class Nonnumber { public static void main(String[] args){ Scanner sc=new Scanner(System.in); System.out.println("请输入一个非负数: "); int n=sc.原创 2021-03-07 16:25:28 · 194 阅读 · 0 评论 -
Java 数据结构 递归练习题(3)
Java实现 递归求斐波那契数列的第 N 项代码package Java_0129;import java.util.Scanner;public class Fibonacci { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入数字 : "); int num = scann原创 2021-03-07 16:16:28 · 144 阅读 · 0 评论 -
Java数据结构练习 递归(2)
Java实现 递归求和递归求 1 + 2 + 3 + … + 10代码实现package Java_0129;public class Add { public static int add(int N) { if(N<2) { return N; } return add(N-1) + N; } public static void main(String[] args) {原创 2021-03-07 10:13:21 · 104 阅读 · 0 评论 -
Java数据结构练习 递归(1)
递归求N的阶乘 Java实现代码package Java_0129;import java.util.Scanner;public class Test { public static int factoral(int N){ if(N<2) { return N; } return factoral(N-1) * N; } public static void main(String[] ar原创 2021-03-07 09:50:02 · 91 阅读 · 0 评论 -
Java数据结构学习DAY3——链表练习(1)
Java数据结构学习DAY3——链表练习已知一条链表,不知道其长度的情况下:通过遍历,打印链表的每个元素。通过遍历,找到链表的最后一个结点。通过遍历,找到链表的倒数第二个结点。通过遍历,找到链表的第 n 个结点。(链表的长度 >= n)通过遍历,计算链表中元素的个数。通过遍历,找到链表中是否包含某个元素。代码package Java41_0202;public class Main { //通过这个方法创建出一个固定内容的链表 //用头结点代替整个链表 //让方原创 2021-02-02 21:32:45 · 132 阅读 · 0 评论