# dataStructure **Repository Path**: laity-champion/data-structure ## Basic Information - **Project Name**: dataStructure - **Description**: 数据结构与算法(尚硅谷-韩顺平老师、青岛大学-王卓)、LeetCode刷刷刷 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://blog.csdn.net/duyun0 - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-11-11 - **Last Updated**: 2023-03-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java, LeetCode, 数据结构与算法, jdk新特性 ## README `生命无罪,健康万岁,我是laity。` **我曾七次鄙视自己的灵魂:** **第一次,当它本可进取时,却故作谦卑;** **第二次,当它在空虚时,用爱欲来填充;** **第三次,在困难和容易之间,它选择了容易;** **第四次,它犯了错,却借由别人也会犯错来宽慰自己;** **第五次,它自由软弱,却把它认为是生命的坚韧;** **第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;** **第七次,它侧身于生活的污泥中,虽不甘心,却又畏首畏尾。** ## 说明 该托管仓库用于数据结构与算法的学习,LeetCode日常刷题 有兴趣的小伙伴可以查看我的个人博客 `https://blog.csdn.net/duyun0` 希望可以帮助到各位,谢谢阅读~ ## 如何判断时间复杂度和空间复杂度 ### 什么是复杂度 > 在设计满足问题需求的算法的时候,复杂度的估算是非常重要的。我们不可能把每一个算法去实现一遍去看看是否足够快。所以应当通过估算算法的复杂度来判断所想的算法是否足够高效。 > ### 时间复杂度 我们经常用到 o (1), o (n), o (logn), o (nlogn) 来表示对应算法的时间复杂度。 时间复杂度的排序是O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(2^n) < O(n!) < O(n^n)。 - 时间复杂度为 O (1),代码只被执行一次。 - 时间复杂度为 O (n),比如常见的遍历算法。 也就是一个for循环的时间复杂度。 - O(n^2)就是嵌套for循环,就是两个for循环,是不是相当于运行了n*n次。比如冒泡和选择排序。 - 再比如 O (logn),( log 是以 2 为底)。二分搜索就是 O (logn) 的算法,每找一次排除一半的可能。 - O (nlogn) 同理,就是 n 乘以 logn,归并排序就是 典型的例子。 ### 空间复杂度 可以类比于时间复杂度 - O(1)单个变量所占的空间永远为1 - O(n)数组里面有n个值,占用了n个内存单元 - O(n^2)可以想象为一个正方形,边长为n,存储了n的二次方个变量 ## 数据结构与算法 ### 链表、栈、队列 ### 二叉树 ### 迭代法 ### 递归法 ### 快速算法 ### 查找算法 ### 哈希表 ### 树 ### 图 ### 十大算法 二分查找算法、分治算法、动态规划算法、KMP算法、贪心算法、普利姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、费罗伊德算法、回溯算法 **人生像攀登一座山,而找山寻路,却是一种学习的过程。只要拥有一颗善良的心,就一定能感染世界,当我们的行为换来的是欢笑的时候,才真正地体会到了什么叫值得。感染他人的同时,我们也收获了相同的快乐。** ## 包 laity包:记录韩顺平老师的数据结构与算法 LeetCode包:记录算法题 Utils包:记录一些面试笔试题、比较有意思的工具类、方法等 NewFeatures包;记录jdk新特性以及jvm调优等 QingdaoUniversity包:记录青岛大学-王卓数据结构与算法 **初航我带你,远航靠自己!!!**