算法
文章平均质量分 94
算法题日常积累
灵动鱼
这个作者很懒,什么都没留下…
展开
-
C-集合源码分析【HashMap&&HashSet】
实现Map接口、存放键值对、非线程安全可以存储null的key和value,null作为键只能有一个,作为值可以有多个默认初始化大小为16、每次扩容,容量变为原来的2倍,总是使用2的幂作为哈希表的大小JDK1.8之前数组+链表数组主体链表解决哈希冲突JDK1.8之后数组+链表/红黑树链表长度大于8,且数组长度大于64,则将链表转换为红黑树链表长度大于8,且数组长度小于64,会优先选择进行数组扩容。...原创 2022-07-15 09:06:28 · 240 阅读 · 0 评论 -
B---集合源码分析(ArrayList)
概述实现List接口,是,即元素存放的数据与放进去的顺序相同实现RandomAccess接口,支持实现Cloneable接口,支持实现java.io.Serializable接口,支持支持放入null元素,底层通过实现支持ArrayList [未加synchronized] Vector线程安全size(), isEmpty(), get(), set()方法均能在内完成,add()方法的有关,addAll()方法的时间开销跟添加元素的个数成正比。ArrayList的实现原创 2022-07-14 17:08:14 · 90 阅读 · 0 评论 -
07-二叉树类
就是6种题型,4种二叉树的,6种二叉搜索书的二叉树可以链式存储,也可以顺序存储深度优先遍历:先往深走,遇到叶子节点再往回走广度优先遍历:一层一层的去遍历前中后,其实指的就是中间节点的遍历顺序栈和队列可以分别遍历深度优先遍历与广度优先遍历题目二叉树的递归遍历递归方法论:以下以前序遍历为例: 熟练的记住递归法的方法论,在递归的路上越走越稳!!!145. 二叉树的后序遍历94. 二叉树的中序遍历二叉树的迭代遍历为什么可以用迭代法(非递归的方式)来实现二叉树的前后中序遍历呢?递归原创 2022-07-14 11:05:25 · 561 阅读 · 0 评论 -
06-栈与队列类
[请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:此题自己琢磨了1个小时,差不多能做出来,大体思路就是:学习:一定要懂得复用,功能相近的函数要抽象出来,不要大量的复制粘贴,很容易出问题!在pop的时候,操作就复杂一些,输出栈如果为空,就把进栈数据全部导入进来(注意是全部导入),再从出栈弹出数据,如果输出栈不为空,则直接从出栈弹出数据就可以不进行数据的全部导入,会导致不进行先进先出,若st1多个元素,导致st1栈原创 2022-07-13 21:09:39 · 299 阅读 · 0 评论 -
05-双指针类
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。此题他喵的做了接近一个小时,研究双指针,也没研究出来,哎,太笨了学习:要真正的理解快慢指针的意义:快指针:是遍历新数组中不等于目标元素的数组慢指针:指针更新 新数组的下标位置理解 快慢指针究竟都是什么含义编写一个函数,其作用是将输入的字符原创 2022-07-12 21:34:11 · 206 阅读 · 0 评论 -
04-字符串类
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。此题很简单,思路也很容易,就是采用前后双指针法,一个指针指向数组的前面,一个指针指向数组的后面,然后进行遍历,每一次进行交换,对应下标也要相加或相减对于库函数的使用,如果题目关键的部分直接用库函数就可以解决,建议不要使用库函数,如果库函数仅仅是解题过程中的一小部分,并且你已经很清楚这个库函数的内部实现原理的话,可以考虑使用库原创 2022-07-10 14:05:50 · 131 阅读 · 0 评论 -
03-哈希表类
哈希类题目,做一下总结,学习一下原创 2022-07-05 21:55:53 · 515 阅读 · 0 评论 -
A-排序算法
排序算法总结原创 2022-07-04 14:47:59 · 216 阅读 · 0 评论 -
02-链表类
链表的基础知识,及相关类型算法题的学习原创 2022-07-03 17:13:49 · 1251 阅读 · 0 评论 -
01-数组类
01-数组类原创 2022-07-01 15:38:35 · 1142 阅读 · 0 评论