
数据结构与算法详解(以Java为例)
文章平均质量分 63
深入数据结构与算法
Zincy星辰
细心耐心的Java、Python、数据库MySQL、数据结构及算法学习分享
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java递归练习
1. 递归求N的阶乘//递归求n的阶乘public class test { //求n的阶乘方法 public static int func(int n) { if (n == 1) { return 1; } int tmp = n * func(n-1); return tmp; } public static void main(String[] args) { ..原创 2022-03-14 10:20:49 · 1587 阅读 · 0 评论 -
【Java数据结构】排序算法详解
插入排序:直接插入排序、希尔排序选择排序:选择排序、堆排序交换排序:冒泡排序、快速排序归并排序:归并排序原创 2022-03-26 18:18:36 · 1552 阅读 · 4 评论 -
Java链表试题详解(超全常见题型)
目录1. 移除链表元素⭐2. 翻转/逆置链表⭐2.1 头插法2.2 三指针法3. 链表的中间结点⭐4.链表中倒数第k个结点⭐5. 合并两个有序链表⭐6. 链表分割⭐7.删除链表中重复的结点⭐⭐⭐8. 链表的回文结构⭐⭐⭐9. 相交链表⭐10. 环形链表⭐⭐11. 环形链表Ⅱ⭐⭐⭐1. 移除链表元素⭐203. 移除链表元素 - 力扣(LeetCode) (leetcode-cn.com)思路:定义前驱prev和cur,循环完再判断头结点...原创 2022-03-19 17:03:06 · 2046 阅读 · 0 评论 -
【Java数据结构】简单实现哈希表
哈希表:散列表冲突-解决 开散列扩容需要注意的问题:需要重新哈希实现简单哈希表(Integer)//哈希桶class HashBuck { //结点类 static class Node { public int key; public int val; public Node next; public Node(int key, int val) { this.key = ke..原创 2022-03-29 16:33:07 · 825 阅读 · 0 评论 -
【Java数据结构】Map和Set(哈希表详解)
Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。目录1. Map实例化添加元素(put)打印2. Set实例化添加元素(add)打印3. 小练习3.1 找出重复的数据(Set练习)3.2 去重(Set练习)3.3 统计重复数据出现的次数(Map练习)4. LeetCode题型训练4.1 只出现一次的数字4.2 ⭐⭐复制带随机指针的链表4.3 宝石与石头4.4 坏键盘打字4.5前K个高..原创 2022-03-28 23:18:14 · 4102 阅读 · 0 评论 -
【Java数据结构】二叉搜索树
目录先定义树结点查找插入数据前序遍历中序遍历⭐⭐移除一个元素⭐⭐测试BinarySearchTree.java文件先定义树结点package binsearchtree; static class TreeNode { public int val; public TreeNode left; public TreeNode right; public TreeNode (int v原创 2022-03-27 18:28:10 · 1179 阅读 · 0 评论 -
【Java数据结构】优先级队列(堆)
目录1. Java中优先级队列的使用2. TOP -K 问题3. 堆排序向下调整:时间复杂度 O (log n)建大根堆:数学推导 -> O (N)插入元素:向上调整1. Java中优先级队列的使用PriorityQueue<Integer> queue = new PriorityQueue<>();2. TOP -K 问题优先级队列 -> 用堆完成将前K个元素建成小堆 从第K+1个元素开始,每次和堆顶去比较。(如.原创 2022-03-25 21:24:08 · 1229 阅读 · 0 评论 -
【Java数据结构】非递归遍历二叉树
目录1. 定义二叉树结点类TreeNode2. 前序遍历(非递归)3. 中序遍历(非递归)4. 后序遍历(非递归)1. 定义二叉树结点类TreeNodepublic class TreeNode { char val; TreeNode left; TreeNode right; public TreeNode(char val) { this.val = val; }}2. 前序遍历(非递归)public c原创 2022-03-25 13:16:13 · 1604 阅读 · 0 评论 -
【Java数据结构】二叉树层序遍历及进阶题解
目录1. 层序遍历2.判断一棵树是不是完全二叉树3.二叉树的构建及遍历4.给定一个二叉树, 找到该树中两个指定节点的最近公共祖先5.二叉树搜索树转换成排序双向链表6.根据一棵树的前序遍历与中序遍历构造二叉树7.根据一棵树的中序遍历与后序遍历构造二叉树8.二叉树创建字符串1. 层序遍历102. 二叉树的层序遍历 - 力扣(LeetCode) (leetcode-cn.com)class Solution { public List<...原创 2022-03-23 23:46:02 · 683 阅读 · 0 评论 -
【Java数据结构】二叉树遍历练习
目录1. 检查两颗树是否相同2. 另一棵树的子树3.判断一颗二叉树是否是平衡二叉树3.* 平衡二叉树最优版O(N)解法!!4. 对称二叉树1. 检查两颗树是否相同100. 相同的树 - 力扣(LeetCode) (leetcode-cn.com)思路:以子问题的思路解题。遍历这棵树->前序 一个为空,一个不为空 或 都不为空但值不一样【结构不同】 都不为空,对应值一样【结构相同,值一样】 确定了根,再去确定其左数和右树class Soluti..原创 2022-03-23 13:35:42 · 1079 阅读 · 0 评论 -
【Java数据结构】二叉树(遍历思路、子问题思路)
目录1. 前序遍历2. 中序遍历3. 后序遍历4. 求结点个数4.1 遍历思路4.2 子问题思路5. 求叶子结点个数5.1 遍历思路5.2 子问题思路6. 求第K层的结点个数7. 求二叉树的高度8. 寻找字符val(子问题思路)1. 前序遍历144. 二叉树的前序遍历 - 力扣(LeetCode) (leetcode-cn.com)遍历思路 //前序遍历 void preOrderTraversal (Node2 root)原创 2022-03-22 22:50:04 · 1328 阅读 · 0 评论 -
【Java数据结构】栈和队列(概念+练题)
目录1. 实现栈(数组)MyStack.java2. 实现队列(链式)MyQueueLinked.java3. 实现循环队列MyCircularQueue.java4. LeetCode习题4.1 括号匹配问题4.2 用队列实现栈4.3用栈实现队列4.4 实现一个最小栈栈:先进后出 队列:先进先出1. 实现栈(数组)MyStack.javapublic class MyStack { public int[] elem; p.原创 2022-03-22 18:42:41 · 1784 阅读 · 0 评论 -
【Java数据结构】实现双向链表
目录1. 🔈引言2. 😊定义双向链表结点3. 📰功能列表5. 💻源代码MyLinkedList.javatest.java1. 🔈引言LinkedList的底层其实就是一个双向链表~那么什么是双向链表呢?请看下图👇(从左往右依次为每一个结点)不难看出:双向链表中每一个结点有三个数据域,分别是data数据、prev前驱、next后继双向链表的特点:引入了前驱域,解决了单链表只能单向访问的痛点 对于双向链表来说,要注意:第一个结点的前驱是nul原创 2022-03-19 20:05:38 · 1080 阅读 · 1 评论 -
【Java数据结构】链表
1. 概况链表在逻辑上是连续的,在物理上不一定连续。分类:单向、双向 带头、不带头 循环、非循环2. 思路data:数值域,里面存储的数据next:引用变量 -> 下一个节点的地址尾巴节点:当这个节点的next域为null的时候头节点:整个链表当中的第一个节点单向不带头非循环链表:单向带头非循环链表:单向不带头循环链表:3. 定义链表节点class Node { public int val; public...原创 2022-03-18 15:23:22 · 2045 阅读 · 2 评论 -
【Java数据结构】顺序表
顺序表在逻辑上和物理上都是连续的。思路:elem数组放元素,usedSize记录记录顺序表的大小1. 顺序表的创建public class MyArrayList { public int[] elem; //elem=null public int usedSize; public int capacity = 10; public MyArrayList() { this.elem = new int[capacity]; ..原创 2022-03-16 23:51:32 · 870 阅读 · 0 评论