数据结构与算法学习
文章平均质量分 93
算法和数据结构的学习记录
2的n次方_
阿里云专家博主,华为云云享专家,csdn 优质创作者。停下脚步很放松,我还是向往山顶的风景
展开
-
双指针算法详解
详细讲解了双指针算法,并结合对应题目进行练习原创 2024-08-28 08:21:39 · 1793 阅读 · 53 评论 -
八大排序算法总结
详细介绍了插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,计数排序原创 2024-07-25 23:10:45 · 5922 阅读 · 84 评论 -
【数据结构】map&set详解
HashMap的底层也是哈希表,和之前的HashSet不同,HashMap中,当插入的key相同时,第二次插入会覆盖原来的value值,同时,如果存储的是自定义类型的对象还需要重写HashCode和equals方法。TreeMap和TreeSet底层一样,都是红黑树,根据键进行排序,排序规则也是类似的,对于非数值等类型,可以实现Comparable接口,指定比较规则,也可以传入比较器。当用HashSet实例化对象时,由于底层结构是哈希表,所以元素是无序的,而TreeSet底层是红黑树,是有序的。原创 2024-08-05 11:28:11 · 2002 阅读 · 101 评论 -
【数据结构】哈希表&二叉搜索树详解
对二叉搜索树和哈希表进行了模拟实现,并介绍了哈希函数的使用,哈希冲突的避免和解决方法,通过使用线性探测,二次探测,哈希桶等方法解决冲突原创 2024-07-29 21:30:29 · 1846 阅读 · 88 评论 -
【数据结构】优先级队列(堆)从实现到应用详解
介绍了优先级队列PriorityQueue的模拟实现和应用,还有堆的一些其他应用,并附上了面试题,堆排序,top k问题原创 2024-07-19 19:47:44 · 2325 阅读 · 100 评论 -
【数据结构】二叉树全攻略,从实现到应用详解
介绍了二叉树的概念,类别以及基本性质,并实现列先序,中序,后序遍历二叉树,以及常用方法的实现原创 2024-07-17 07:34:44 · 1758 阅读 · 30 评论 -
【数据结构】栈和队列的深度探索,从实现到应用详解
本文详细介绍了栈和队列的基本内容,并通过顺序表实现了栈,通过双向链表实现了队列以及数组实现循环队列的常用方法,干货满满原创 2024-07-15 07:10:00 · 2203 阅读 · 93 评论 -
【数据结构】链表从实现到应用,保姆级攻略
介绍并实现了单向链表和双向链表,并对Java中的LinkedList的一些方法进行了演示,还有LinkedList的遍历,与ArrayList的对比和二者的应用场景原创 2024-07-10 21:10:44 · 3606 阅读 · 97 评论 -
【数据结构】初识集合&深入剖析顺序表(Arraylist)
介绍了Java中集合的一些框架,单列集合的一些接口,以及顺序表ArrayList原创 2024-06-16 14:13:17 · 1827 阅读 · 57 评论 -
你还不会暴力搜索吗,dfs(深度优先搜索)详解,看这一篇就够啦
DFS算法的基本思想是从图中的某个顶点v出发,访问此顶点,然后依次从v的未被访问的邻接点出发深度优先遍历图,直至图中所有和v有路径相通的顶点都被访问到。若此时图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作起始点,重复上述过程,整个进程反复进行直到所有顶点都被访问为止。指数型枚举是指一共有n个数,每一个数都有两种状态,也就是选或不选,时间复杂度也就是2^n,指数级的。原创 2024-07-08 14:16:38 · 5121 阅读 · 67 评论 -
位运算的妙用 1
这个方法呢,巧妙的利用了下标的关系来进行求解,因为是1~1000的数字加上一个重复的数字,那么 arr[ i ] 中所记录的元素作为数组helper 的下标 ,也不用担心数组越界的问题,最终helper数组中最后一个位置并没有被赋值,为0,其他位置都被赋值为了1,而因为有一个重复的元素,所以helper。看到这道题,大家会考虑怎么做,我第一次想出的答案就是直接求和,然后减去真正的1~1000数字的和,最后得到的那个数字就是所求,直接暴力求解,哈哈,但是具有局限性,所以就来给大家分享一个很巧妙的方法。原创 2024-01-02 11:04:41 · 601 阅读 · 0 评论 -
递归介绍及练习
盘子的数量大于 1 时,把除了最下面的盘子看作一个整体,以 C 为辅助塔,移动到目标塔 B ,再将蓝色的盘子放入C,此时最大的蓝色盘子正确归位,每次放置时,这三个柱子谁是开始塔,目标塔,辅助塔都是在不断变化的,这个需要仔细去思考明白。通俗点来讲呢,比如说刚开学,你不知道校长在哪,就去问另一个同学,他也不知道,他就再去问另一个同学,就这样一直循环,终于有个同学知道,他就把答案告诉上一个同学,最终,这个答案顺着这个链条给到了你。1 ~ 2 ,以及为1的时候的情况,也就是递归的出口。原创 2024-01-05 18:09:50 · 1160 阅读 · 2 评论 -
位运算的妙用 2
如图所示,在32个比特位表示的数中,左移之后低位补0,原来的1100 1000变为了11 0010 0000,也就是由200变为了800,不难发现左移一次,原来的数字乘以2,这个小技巧在以后的学习中也非常有用,右移也是一样的道理,只不过变为了高位补0,右边舍去,数值等于原来的数字乘以1/2。减去之后再和原来的数字做& 运算,参与借位的部分就都变为了 0 ,从而每次都消掉一个最低位的1,依次循环,直到最后结果为0,减去1的个数就是原来数字中1的个数。与方法一类似,这次我们选择右移要比对的数字,1 保持不动。原创 2024-01-04 10:30:53 · 548 阅读 · 4 评论 -
常见排序算法
本文章对四种常见的排序算法进行了简单的解读及代码实现原创 2023-11-28 17:33:06 · 1067 阅读 · 0 评论
分享