![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
Monday_@@
java开发的老司机
展开
-
牛客网算法题:判断链表中是否有环
/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { public boolean hasCycle(ListNode head) {.原创 2020-11-04 19:16:07 · 356 阅读 · 0 评论 -
牛客网算法题:字符串的排列
import java.util.*;public class Solution { public ArrayList<String> Permutation(String str) { ArrayList<String> res = new ArrayList<String>(); if(str.length() == 0) return res; char [] array = str.toCh.原创 2020-11-04 19:16:26 · 153 阅读 · 0 评论 -
牛客网算法题:反转链表
// public class ListNode {// int val;// ListNode next = null;// ListNode(int val) {// this.val = val;// }// }public class Solution { public ListNode ReverseList(ListNode head) { if(head==null) { ret..原创 2020-11-04 19:16:47 · 194 阅读 · 0 评论 -
HashMap、HashTable和ConcurrentHashMap区别分析
目录一、底层原理二、区别一、底层原理HashMap底层是由链表和数组组成,在链表长度超过8时,链表转换成红黑树。为什么Map桶中个数超过8才转为红黑树?TreeNodes占用空间是普通Nodes的两倍,为了空间和时间的权衡,为6时红黑树也比链表快,但转换过程消耗和空间消耗不划算;节点的分布频率会遵循泊松分布,链表长度达到8个元素的概率为0.00000006,几乎是不可能事件...原创 2019-10-24 08:28:39 · 392 阅读 · 0 评论 -
排序算法:冒泡排序和快速排序
排序算法基本上是程序员必要掌握的一种技能;针对不同的数据特点采用不同的算法将会提高程序的效率,大大的节省资源。排序算法有很多种如插入排序、选择排序、冒泡排序、快速排序、归并排序、希尔排序、二叉树排序、计数排序、桶排序等等;但是本文就简单的先介绍一下冒泡排序和快速排序两种:冒泡排序应该属于稳定的排序算法;而快速排序则属于不稳定的排序算法。冒泡排序:名字已经很形象,实际实现是相邻两节点进行比较...原创 2019-05-13 13:44:53 · 587 阅读 · 0 评论 -
队列
一、什么是队列?队列是一种特殊的线性表,单向队列只能在一端插入数据(后),另一端删除数据(前);它和栈一样,队列是一种操作受限制的线性表;进行插入操作的称为队尾,进行删除操作的称为队头;队列中的数据被称为元素;没有元素的队列称为空队列。由于只能一端删除或者插入,所以只有最先进入队列的才能被删除,因此又被称为先进先出(FIFO—first in first out)线性表。队列分为两种:...原创 2019-05-15 11:04:56 · 6758 阅读 · 4 评论 -
解析java中的栈和堆
堆(Heap)与栈(Stack)是常用的两种数据结构;也是两种内存管理方式。一、JVM中的堆和栈:堆内存: 用来存放new创建的对象和数组,由java jvm的垃圾回收器来管理;堆内存的特点就是:先进先出,后进后出;堆可以动态地分配内存大小,生存期也不必事先告诉编译器;缺点是存取速度较慢。栈内存:由操作系统自动分配释放 ,用来存放基本类型变量和对象的引用变量等。其操作方式类似于数据结构...原创 2019-05-16 20:43:03 · 380 阅读 · 0 评论