2023秋招算法题每日学习(11)_不爱吃核桃的阿伟的博客-爱代码爱编程
DAY 11 1.LeetCode 3. 无重复字符的最长子串 考察点:双指针 滑动窗口 哈希表 解法: (双指针扫描) O(n) 定义两个指针 i,j(i<=j)i,j(i<=j),表示当前扫描到的子串是 [i,j][i,j] (闭区间)。扫描过程中维护一个哈希表unordered_map<char,int>
代码编织梦想
DAY 11 1.LeetCode 3. 无重复字符的最长子串 考察点:双指针 滑动窗口 哈希表 解法: (双指针扫描) O(n) 定义两个指针 i,j(i<=j)i,j(i<=j),表示当前扫描到的子串是 [i,j][i,j] (闭区间)。扫描过程中维护一个哈希表unordered_map<char,int>
DAY 8 1.AcWing 860. 染色法判定二分图 考察点:染色法 二分图 深度优先遍历DFS来进行染色 利用邻接表来存储图 基础知识(重要性质): 染色法: 将所有点分成两个集合,使得所有边只出现在集合之间,就是二分图 二分图:一定不含有奇数环,可能包含长度为偶数的环, 不一定是连通图 (1)图论中重要性质:一个图是二分图当且仅当图中不含
DAY 7 1.AcWing 858 prim算法求最小生成树 考察点:prim算法 主要针对于稠密图 最小生成树与二分图学习总体框架: 基础知识:朴素prim算法 prim算法与Dijkstra算法的区别在于,前者用更新的是后续点到集合的距离,后者更新的是到起点的距离。 在写代码的时候需要注意的一点是:为
DAY 6 1.leetcode 15 三数之和 考察点:哈希解法 双指针法 对于哈希解法比较费时,而且针对去重的操作有很多细节需要考虑,不方便做剪枝操作,该题不推荐使用哈希解法。采用双指针法 双指针法(思路简单,去重操作是关键):时间复杂度:O(n^2)。 解题步骤: 1.先进行排序操作
DAY 5 1.AcWing 851. spfa求最短路 考察点:spfa算法 spfa算法是bellman_ford的队列优化版本, bfs实现 优化的是dist[b] = min(dist[b], dist[a]+w) 因为只有dist[a]更新之后变小, dist[b]更新之后才有可能变小 需要st[i]数组,保证队列里面只有一个i;
DAY3 1.AcWing 849. Dijkstra求最短路 I 考察点:朴素Dijkstra,求最短路问题 基础知识点: (1)最短路(存在权重) 在图论中:源点就是起点,汇点就是终点 n是点的数量,m是边的数量 最短路知识结构图: (2)朴素Dijkstra算法 适合用于稠密图 s是当前已确定最短距离的点 伪代码:
DAY 2 1.Acwing 848 有向图的·拓扑序列 考察点:拓扑序列 有向图的广度优先遍历 基础知识; (1)拓扑序列:若一个由图中所有点构成的序列A满足;对于图中的每条边(x,y),x在A中都出现在y之前,则称A是该图的一个拓扑序列(对于每条边,起点在终点的前面) 总结:有向无环图(拓扑图)一定存在拓扑序列 入度:有多少条边
前言:针对明年秋招开始对算法及数据结构进行学习及复习,该贴主要通过Acwing 算法基础课,《代码随想录》,以及力扣题库进行学习,在此之前以及有一定的语言以及数据结构基础,每日将自己所刷的题目以及复习的题目进行记录,有同样需求的同学可以一起监督学习。(主要运用c、c++进行编程,期间还包括一些对语言的复习) DAY 1 1.Acwing 846 树的重