- 博客(55)
- 收藏
- 关注
原创 MARL零样本协调之Fictitious Co-Play学习笔记
对称性问题:指的是在多智能体环境中,智能体的角色或策略相似,缺乏差异化,导致合作时的效率较低。解决对称性问题的方法是训练多个不同技能水平的智能体,以打破这种“对称”。与不同水平的智能体合作:强调智能体不仅能与技能相当的伙伴协作,还能够适应和配合技能高低不一的伙伴。为此,FCP 通过设置多个检查点训练出技能层次不同的智能体,并在训练过程中确保智能体能够与这些不同水平的伙伴协作。
2025-03-05 19:38:47
487
原创 学写实现数据结构类题心得体会-新手小白向-c++-前缀树、栈和队列的互相实现
【代码】学写实现数据结构类题心得体会-新手小白向-c++-前缀树、栈和队列的互相实现。
2024-09-04 17:51:20
708
原创 多维动态规划-面试高频!-最长公共子序列和最长公共子串、回文串-c++实现和详解
中等给定两个字符串text1和text2,返回这两个字符串的最长的长度。如果不存在,返回0。一个字符串的是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。"ace""abcde""aec""abcde"两个字符串的是这两个字符串所共同拥有的子序列。text2。
2024-09-04 11:32:28
1427
原创 字节-人工智能编辑代码方向面试-题目记录
强化学习,有哪些强化学习算法(我当时用policy-based和value-based来说了)find函数和count函数的时间复杂度都是O(n),因为都是遍历整个数组来找的!二分查找的时间复杂度(是O(log2n)!机器学习中,监督学习和非监督学习的区别?问的都是自己简历里写的!有哪些常用的数据标注方法?为什么要labled?简述一下几个排序算法。
2024-09-02 18:42:12
960
原创 力扣top100-链表类题易错点总结-c++实现(更新中)-合并有序链表、快慢指针、随机链表复制等
【代码】力扣top100-链表类题易错点总结-c++实现(更新中)
2024-08-24 11:05:05
751
原创 力扣刷题-如何把时间超限代码改回正道?-用动态规划题力扣139 单词拆分来分享-c++实现
题目链接:单词拆分链接最开始的代码,把三个小样例都过了详细注释版代码如下:无奈提交的时候时间超限:如果:这是通过值 来移除元素。该方式需要 再次查找 ,以确定要移除的元素的位置,因此会稍微低效一些,因为它相当于进行了两次查找:一次是 ,然后再进行删除。2.substr(0, i) 操作尽量减少,因为时间复杂度是O(n) 还是比较大的,我之前都是通过这个函数取子串,然后和dict里的内容匹配,所以用的比较多,于是有了下一点改进3.字典使用 存储:4.还有就是如果dict中有很多很小的子串,比如说a
2024-08-21 15:51:04
484
原创 多维的vector也可以sort!力扣刷题-合并区间有感
暴力法失败了,其实很好模拟,唯一的问题就是interval很难有序,结果答案告诉我可以直接sort。。。那到底sort(intervals.begin(), intervals.end());是什么意思呢?
2024-08-20 22:40:12
444
原创 刷题技巧:双指针法的核心思想总结+例题整合+力扣接雨水双指针c++实现
双指针法的核心在于利用两个指针的协作,通过合理的移动策略来减少问题的规模或提高问题的求解效率。其应用非常广泛,可以显著优化涉及数组、链表等线性结构的问题,尤其在需要高效处理子区间、子序列、或寻找特定条件下的元素时尤为有效。这种方法的优势在于线性遍历能够在保持结果正确性的同时,减少算法的复杂度,是处理各种线性问题时的一个非常有力的工具。例题:力扣接雨水接雨水重点1,利用双指针的好处就是自然完成遍历!(两个指针相交就便利完成)重点2:public:// 获取数组的长度。
2024-08-13 21:59:08
737
原创 字节-飞书人力套件-测试岗面试 题目记录
参考我的另一篇文章,里面有详细说明(面试的时候回答概念就好,背记一下!多态索引的关键点加速查询:索引通过为表中的一列或多列创建一个有序的列表,使数据库可以更快地找到和访问特定的数据行。没有索引的情况下,数据库可能需要扫描整个表来找到所需的数据。索引类型(底层实现!B-tree 索引:最常用的索引类型,适合大多数查询操作。它通过平衡树结构,提供高效的插入、删除和查询性能。哈希索引:用于等值查询(如=),通过哈希函数直接定位数据,但不适合范围查询。全文索引:用于文本搜索,支持关键词的全文检索。
2024-08-13 10:42:17
554
原创 java和c++两种语言的多态对比(java选手转c++必学!)多态-保研机试,大厂面试必问
java和c++中多态的概念基本一致,都是分为编译时多态(同一接口,不同操作)和运行时多态(子类或派生类重写父类的方法),优点也是一致的,但是实现方法有区别。
2024-08-13 10:23:19
432
原创 c++深拷贝和浅拷贝区别(sysu保研机考,实习面试常见问题!)
浅拷贝:仅复制指针值(地址),源对象和目标对象共享相同的内存,易引发悬空指针问题。深拷贝:复制指针指向的数据,为目标对象分配新的内存,确保源对象和目标对象独立。在处理动态分配内存的对象时,深拷贝通常是更安全的选择。
2024-08-12 10:51:10
362
原创 刷题-到底什么时候需要scanf(“%d%d“, &n, &m) != EOF)?一次解决
注意!在大多数编程竞赛或算法题目中,通常不需要检查 scanf(“%d%d”, &n, &m)!= EOF,因为题目的输入通常不会涉及文件的末尾标志 EOF。通常的输入都是由用户输入或题目中给定的,并且你只需要根据具体的输入模式判断何时终止循环即可。
2024-08-10 20:43:29
314
原创 并查集-应用方向以及衍生汇总+代码实现(c++)-学习一个数据结构就会做三类大题!
但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了房间A和B,那么既可以通过它从房间A走到房间B,也可以通过它从房间B走到房间A,为了提高难度,小希希望任意两个房间有且仅有一条路径可以相通(除非走了回头路)。小希现在把她的设计图给你,让你帮忙判断她的设计图是否符合她的设计思路。比如下面的例子,前两个是符合条件的,但是最后一个却有两种方法从5到达8。输入包含多组数据,每组数据是一个以0 0结尾的整数对列表,表示了一条通道连接的两个房间的编号。
2024-08-10 17:25:55
465
1
原创 记忆化搜索-滑雪-c++递归实现
记忆化搜索就是结合了 DFS 的遍历方式和数组存储已遍历值的优化技术。通过存储已经计算过的子问题的解,可以显著减少重复计算,从而提高算法效率。int n, m;// n: 行数, m: 列数// g: 存储滑雪场高度的二维数组// f: 记忆化数组,用于存储从每个点出发的最长路径// dx, dy: 分别表示在四个方向上的移动(上、右、下、左)// dp函数:计算从点(x, y)出发的最长滑行路径长度// v引用f[x][y],用于减少访问f[x][y]的开销if (v!
2024-08-09 18:27:39
411
原创 debug:could not convert ‘{1, 3}‘ from ‘<brace-enclosed initializer list>‘ to ‘std:vector不同dev怎么处理
以下针对不同版本的dev c++
2024-07-30 18:43:18
766
原创 保研面经:排序算法辨析(快速记忆版)(冒泡排序,选择排序,插入排序,希尔排序,归并排序,快速排序)
选择排序:摸到一叠牌,每次选择出最小的放在合适的位置(第一次放在第一张,第二次放在第二张),实现排序最好最坏都是 O(n^2)插入排序:摸牌的时候一张一张摸,每次找到合适的位置插入时间复杂度:最好情况O(n),最差情况O(n2)希尔排序:图源 bilibili视频希尔排序时间复杂度平均:O(N^1.3)冒泡排序:从前往后遍历n次,如果有顺序不对的就交换,直到一次完全不交换;时间复杂度:最坏情况:O(n^2) 最好情况:O(n)归并排序:先排序后再合并,先给小范围排序再给
2024-07-29 23:33:25
275
原创 Debug:两种AddressSanitizer:DEADLYSIGNAL
若在C++ 代码中,出现 AddressSanitizer:DEADLYSIGNAL 错误通常意味着程序试图访问它不应该访问的内存区域,这可能导致段错误(segmentation fault)。这个错误可能由多种原因引起,但通常是由于数组越界、解引用了无效的指针、或是栈溢出等情况。
2024-07-22 20:50:06
707
原创 用一道力扣题来完全掌握迪杰特斯拉算法(c++)-网络延迟时间-算法描述辅助记忆
1.把题目所给的条件存入邻接矩阵(c++中vector当数组使用),直接vector<vector> g(n, vector(n, inf));第二层 寻找未使用且dist最小的点(第一次会选择dist[k-1]即自身,完成初始化)3.开始算法的循环:第一层 执行n次,一个一个选入点并标记使用,更新最短路径dist。2.初始化dist数组为无穷大,初始化源点;初始化used数组作为标记。ps 因为找到是最短路径,所以直接初始化为无穷大。4.最后根据题目需求返回答案。
2024-07-19 12:15:40
706
原创 java选手学c++需要学习的(包含std,stl,iterator,参数类型,map使用方法对比)(个人向,更新中)
在Java中,所有的对象都是通过 new 关键字在堆上创建的。例如:Vector v = new Vector();在Java中没有类似C++中栈上分配的对象的概念。如果你在代码的开始部分使用了 using namespace std;语句,那么在这个文件中你就不需要在每个标准库类型或函数前加上 std:: 前缀了。java中新建一个对象,常常要用new。
2024-07-16 23:17:40
613
原创 引用和地址(指针)的区别(c++)精讲+代码示例
引用 (Sample& xy):传递的是一个对象的别名,操作引用相当于直接操作原对象。指针 (Sample* xy):传递的是一个对象的地址,操作指针需要使用->或*来访问原对象。在函数参数中使用引用可以简化代码,避免指针的复杂性和潜在的错误。
2024-07-15 17:04:00
668
1
原创 c++中的几类构造函数:成员初始化列表,构造函数体内赋值,带有逻辑的构造函数,默认构造函数
在C++中,构造函数并不一定都像你提供的那样。构造函数的形式和内容可以有所不同。具体来说,构造函数可以有不同的写法,主要取决于需要初始化的成员变量和构造函数的逻辑。下面是一些常见的构造函数写法和使用场景。
2024-07-15 15:53:25
273
原创 回溯法-力扣刷题合集代码-java实现-正在更新中
使用used数组,在排列问题中非常有用,因为它帮助跟踪哪些元素已被使用,确保每个元素在每个排列中只使用一次。这个方法很好地解决了排列问题,其中元素顺序不同也视为不同的排列。
2024-07-06 22:10:51
204
原创 n皇后问题:递归与回溯,java实现
问题表述为:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。如果经过±90度、±180度旋转,和对角线对称变换的摆法看成一类,共有42类。计算机发明后,有多种计算机语言可以编程解决此问题。八皇后问题(英文:Eight queens),是由国际西洋棋棋手马克斯·贝瑟尔于1848年提出的问题,是回溯算法的典型案例。
2024-07-04 17:55:00
465
原创 作业帮后端开发笔试题,小明爬楼梯
这道题属于简单题,最直接的想法就是f(n)=f(n-1)+f(n-2)+f(n-3),可以采取递归的思路,其中出口是f(1)=1,f(2)=2(跨两步或者跨一步),f(3)=4(跨三步,跨一步,跨一步+两步2种类情况)ps. 笔试是acm模式,不是如下的核心代码模式,该代码是我在leecode找到题目写的;做题的时候裸考,所以不会做:(但是最好不要使用递归的方式,时间复杂度过大,可能时间超限!
2024-07-03 23:21:56
454
原创 力扣简单题:合并有序数组-java-双指针(为什么力扣上跑的结果,和自己跑的结果不一样?)
关键,直接让nums1数组去承接正确元素,用另一个数组去替代nums1来完成取元素的过程;应该在测试的时候会自动检测nums1内容是否是正确答案吗,而不是看最后的return结果。以后其他类似问题也可以参考这个简单trick。记录一道leecode的简单题,
2024-06-24 23:52:47
195
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人