12 2022 档案
摘要:在c++中,由于sort()函数默认提供的是由小到大的排序方式,因此有时候我们需要自定义排序规则来实现由大到小的排序。 一维vector<>排序 #include <bits/stdc++.h> using namespace std; void printvec(vector<int>& vec)
阅读全文
摘要:拓扑排序定义 给定一个包含 n 个节点的有向图 G,我们给出它的节点编号的一种排列,如果满足: 对于图 G 中的任意一条有向边 (u, v),u 在排列中都出现在 v 的前面。 那么称该排列是图 G 的「拓扑排序」。 题目与解析 lc 210. 课程表 II 我们可以将本题建模成一个求拓扑排序的问题
阅读全文
摘要:二分图的概念 二分图就是顶点集V可分割为两个互不相交的子集,并且图中每条边依附的两个顶点都分属于这两个互不相交的子集,两个子集内的顶点不相邻。 染色法概念 二分图算法也称为染色法。如果可以用两种颜色对图中的节点进行着色,并且保证相邻的节点(边两端的节点)颜色不同,那么图为二分。 下图中有相邻节点的颜
阅读全文
摘要:优先队列的概念 在优先队列中,队列中的每个元素都与某个优先级相关联,但是优先级在队列数据结构中不存在。 优先队列中具有最高优先级的元素将被首先删除,而队列遵循FIFO(先进先出)策略,这意味着先插入的元素将被首先删除。 如果存在多个具有相同优先级的元素,则将考虑该元素在队列中的顺序。 优先队列的语法
阅读全文
摘要:Map是Eigen中一个非常有用却又很容易被忽略的类,可以用它避免很多不必要的内存拷贝,举个例子,你手头有一个std::vector<Eigen::Vector3d> pts的数据,你需要将这个数据转化成一个n*3的矩阵,以便进行后续的矩阵计算,你会怎么做? 最直接的想法是这样的: MatrixXd
阅读全文
摘要:一、浅拷贝 Shallow copy: if the field is a pointer to some object, the address of the pointer is copied rather than its contents. (浅拷贝:数据域是一个指针,只拷指针的地址,而非指
阅读全文
摘要:一、什么是深度优先遍历(DFS) 以“深度”为第一关键词,每次都沿路径到不能再前进时,才退回到最近的岔路口,然后继续按同样的逻辑搜索。 二、题目与解答 题目: Leetcode 695. 岛屿的最大面积 解答思路: 首先要遍历数组,当发现(i,j)对应为陆地时,进行如下步骤: (1)递归解法 递归解
阅读全文
摘要:本篇为b站的专题笔记,参考链接为 指针和数组的重难点解析 零、指针基础知识回顾 int a = 100; int *p_a = &a; 这里定义了一个int类型的变量a,它占用了地址为 0X11A(乱编的,仅示意)的内存存储了整数100。 在定义指针变量 p_a 的同时对它进行初始化,并将变量 a
阅读全文
摘要:Copy Constructions (拷贝构造) 拷贝构造:用一个对象初始化另一个同类对象 拷贝构造函数可以简写为 copy ctor,或者 cp ctor。在Unix/Linux中,拷贝文件的命令叫做 cp。 如何声明拷贝构造函数(copy ctor): Circle (Circle&); Ci
阅读全文
摘要:1. Developing generic function (设计泛型函数) 1.1. Steps (步骤) (1) To start with non-generic function (先设计/编写一个非泛型函数) (2) To debug and test it (调试/测试该函数) (3)
阅读全文
摘要:一、算法简介 双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多个数组的多个指针。 若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围的区域即为当前的窗口),经常用于区间搜索。 若两个指针指向同一数组,但是遍历方向相反,则可以用来进行搜索,待
阅读全文
摘要:BFS模板: BFS使用队列,把每个还没有搜索到的点依次放入队列,然后再弹出队列的头部元素当做当前遍历点。BFS总共有两个模板: 模板1:如果不需要确定当前遍历到了哪一层,BFS模板如下。 1 while queue 不空: 2 cur = queue.pop() // 弹出队列的头部元素当做当前遍
阅读全文
摘要:一、入门 动态规划的的四个解题步骤是: 定义子问题 写出子问题的递推关系 确定 DP 数组的计算顺序 (DP 数组也可以叫”子问题数组”,因为 DP 数组中的每一个元素都对应一个子问题。) 空间优化(可选) class Solution { public: int rob(vector<int>&
阅读全文