![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
峰回路转
让时间说真话
展开
-
有关Java的HashMap的各种问题都在这里
文章目录1. HashMap是怎么get元素的?2. HashMap是怎么put元素的?3. HashMap的底层实现4. HashMap多线程操作导致的死循环问题5. HashMap 的⻓度为什么是2的幂次⽅?6.HashMap的key可以是任何对象吗?7. 为什么HashMap采用使用数组+链表的形式?8. 我⽤LinkedList代替数组结构可以吗?9. HashMap的扩容机制10. HashMap与HashTable的区别?11. HashMap与HashSet的区别1. HashMap是原创 2020-08-19 16:54:34 · 543 阅读 · 0 评论 -
HashMap的扩容机制
文章目录先讲扩容原理子问题1:HashMap是怎么get元素的?子问题2: HashMap是怎么put元素的?子问题3:hash算法子问题4:HashMap的resize子问题5:HashMap的key可以是任何对象吗子问题6:为什么HashMap采用使用数组+链表的形式?子问题7:我⽤LinkedList代替数组结构可以吗?先讲扩容原理在jdk1.7的时候,扩容需要满足如下两个条件:(1)存放新值的时候当前已有的元素的个数必须大于等于阈值(2)存的放新值的时候当前存放数据发生了hash碰撞而在原创 2020-08-19 16:40:04 · 1340 阅读 · 3 评论 -
编程题:在两个长度相等的排序数组中找到上中位数(递归练习)
文章目录问题描述:解题思路:思路1:暴力解法思路2:思路1的改装版思路3:递归版思路4:思路3的改装,迭代版解题代码:思路1代码思路2代码思路3代码思路4代码链接:传送门来源:牛客网问题描述:解题思路:思路1:暴力解法观察题我们可以得到:就是有两个有序的数组,然后把他们合并起来时求出这一串数据的中位数。既然是求新组合数据的中位数,那么我们可以将这两个数组合并为一个数组,然后重新排序...原创 2020-04-17 15:13:28 · 923 阅读 · 0 评论 -
常见算法之二分查找算法
二分查找算法概念利用每次将数据平分的思想将数据分为两部分,然后不断进行查找。这样的算法时间复杂度很低,当有X个数据的时候,最多的查找次数是n=log2X。但是 这个算法的缺点在于只能用于有序的数组序列,如果数组无序,我们需要先将它排序才行。理解为了更好的理解我找了一道很经典的二分查找算法题,供大家理解: 传送门思路1.如题上所说用二分查找算法说明数组已经是一个有序...原创 2020-04-09 23:27:26 · 206 阅读 · 0 评论 -
编程题:寻找第K大
文章目录问题描述:解题思路:解题代码:链接:传送门来源:牛客网问题描述:解题思路:这个题主要考察的快速排序(这里我们做的事从小到大的排序),何为快速排序:(1)每次找一个基准值(一般的我们将小数组的第一个数作为基准值)将整个数组分为2部分,前半部分比它大,后半部分比它小(2)不断进行递归1步骤,直到无法小数组无法进行分割(小数组里只有一个元素)(3)最后将整个数组排列好解题...原创 2020-03-26 17:07:01 · 570 阅读 · 0 评论 -
数据结构七大排序解读(java版)
一.插入排序:1.直接插入排序:每次选择无序区间的第一个元素,在有序区间内选择合适的位置插入,直到整体有序void insertSort(int[] array) { for (int i = 1; i < array.length; i++) { int tmp = array[i]; int j; ...原创 2019-10-04 15:51:30 · 849 阅读 · 0 评论 -
数据结构之删除链表中等于定值val的所有结点(4种方法)
class Node{ int val; Node next=null; Node(int val){ this.val=val; } public String toString(){ return String.format("(%d)", val); } //头插public static Node p...原创 2019-07-29 19:29:08 · 396 阅读 · 0 评论 -
数据结构之顺序表的基本操作(java语言)
public class MyArrayList {//属性是什么private int[] array;//代表的是存在数据的数组//array.length代表数组的容量private int size; //记录顺序表的已有数据个数//构造方法public MyArrayList(){//1.申请空间array=new int[5];//2.初始化数据个数size=0...原创 2019-07-24 20:37:05 · 619 阅读 · 0 评论 -
数据结构之链表的基本操作(链表表为单向不循环的链表,java语言)
class Node{ int val; Node next=null; Node(int val){ this.val=val; } public String toString(){ return String.format("(%d)", val); }//***插入//头插public static No...原创 2019-07-29 19:17:22 · 114 阅读 · 3 评论