- 博客(184)
- 收藏
- 关注
原创 并查集 | 1 684.冗余连接(含基础知识)
对集合进行合并(Union) 与 查询(Find) 操作的一种数据结构。合并 就是将两个不相交的集合合并成一个集合。查询 就是查询两个元素是否属于同一集合。时间复杂度都与“获取头结点”这一过程,也就是树的高度有关。因此,假如生成的树只有有限高度的话,合并和查询的操作都是 O ( 1 ) 的时间复杂度。最差情况下,合并和查询的时间复杂度都是 O ( N )。版权声明:本文为优快云博主「夜槿笙歌」的原创文章,遵循CC 4.0BY-SA版权协议,转载请附上原文出处链接及本声明。
2023-05-18 10:41:01
276
原创 算法性能分析
严格从大O的定义来讲,快速排序的时间复杂度应该是O(n^2)。但是我们依然说快速排序是O(nlogn)的时间复杂度,这个就是业内的一个默认规定,这里说的O代表的就是一般情况,而不是严格的上界。如图所示:我们主要关心的还是一般情况下的数据形式。面试中说道算法的时间复杂度是多少指的都是一般情况。但是如果面试官和我们深入探讨一个算法的实现以及性能的时候,就要时刻想着数据用例的不一样,时间复杂度也是不同的,这一点是一定要注意的。
2023-05-12 09:56:16
165
原创 链表 | 链表篇 1-3
链表节点的定义,很多同学在面试的时候都写不好。这是因为平时在刷leetcode的时候,链表的节点都默认定义好了,直接用就行了,所以同学们都没有注意到链表的节点是如何定义的。而在面试的时候,一旦要自己手写链表,就写的错漏百出。// 单链表 struct ListNode {int val;// 节点上存储的元素 ListNode * next;// 指向下一个节点的指针 ListNode(int x) : val(x) , next(NULL) {} // 节点的构造函数 };
2023-05-11 15:21:35
56
原创 额外题目 | 数组 7-9 *
力扣链接(opens new window)给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为OlognO(\log n)Ologn的算法解决此问题吗?
2023-05-11 10:45:03
42
原创 数组 | 数组篇汇总
使用C++的话,要注意vector 和 array的区别力扣题目链接(opens new window)给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:123示例 2:123提示:对区间的定义没有想清楚,区间的定义就是不变量。时间复杂度:O(log n)注意如下两点:代码如下:(详细注释)优先级:时间复杂度:O(logn)O(\log n)O(logn)空间复杂
2023-05-10 11:31:51
80
原创 DP | 54 动态规划总结&题纲
关于动规,还有 树形DP(打家劫舍系列里有一道),数位DP,区间DP ,概率型DP,博弈型DP,状态压缩dp等等等,这些我就不去做讲解了,面试中出现的概率非常低。能把本篇中列举的题目都研究通透的话,你的动规水平就已经非常高了。对付面试已经足够!
2023-05-07 10:20:11
55
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人