自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 leetcode刷题:单调栈

暴力解法:就是遍历数组,找左右两侧最高的柱子,然后用两者之间的小值减去当前柱子的高度就得到的当前柱子上的雨水,如果大于0则加入结果中。需要掌握的重点方法,底层思想就是按行来计算雨水,维护一个栈存放柱子下标,遍历柱子,有三种情况。这里把画面想象为每计算完一次雨水就把那一行填平就能理解算法流程了。看了一下思路,就反应过来了,和接雨水一个思路。只能想到一个暴力解,提交的时候超时了。

2025-03-26 11:15:16 298

原创 【多智能体强化学习】经典论文COMA:Counterfactual Multi-Agent Policy Gradients

COMA解读

2024-11-08 14:32:06 500

原创 Leetcode刷题:栈与队列

主要就是理解栈和队列的特性。用两个栈来模拟,其目的就是为了颠倒排列顺序括号配对要想到使用栈主要是了解波兰表达式的特性,思路知道用栈了就还是很简单的。

2024-08-29 17:23:34 224

原创 Leetcode刷题:哈希表

找一个数是否出现过或一个数是否在集合中的时候就要想到用哈希表法。

2024-08-22 17:03:03 296

原创 Leetcode刷题:字符串

难点主要在于next表的制作,首先得知道next表的作用,就是当匹配失败时,通过检查前一项的next表值重新检测匹配。要想到这两种情况其实是一种处理。就不写了挨个配错误了从头开始。

2024-08-18 18:26:21 236

原创 Leetcode刷题:链表

这个题解题思路还是挺有意思的用双指针,快指针一次走两格,慢指针一次走一格。这个的证明用举例子就行,他们两个再相遇之前的几种情况举出来就行。然后根据下面这幅图可以列出两个指针时间相等的式子。这里n必是大于等于1的逻辑思考一下就知道了。根据得出来的式子可以知道,让一个指针位于起点一个指针位于相遇点,以每次一格的速度往前走,最后会在环形入口节点相遇。思路就是自己造一个虚拟节点避免掉要再考虑头节点的值=target值的特殊情况。关键点在于对头节点的处理。

2024-08-10 19:21:43 353

原创 cpp笔记07:STL

STL(Standard Template Library,标准模板库)和之间通过进行无缝连接STL几乎所有代码都采用了模板类或者模板函数。

2024-08-07 16:23:49 1176

原创 cpp学习记录06:文件操作与模板

对文件操作需要包含头文件<fstream>文件类型:文本文件:以文本ASCII码形式储存二进制文件:以文本的二进制形式储存操作文件三大类:ofstream:写操作ifstream:读操作fstream:读写操作。

2024-08-05 15:50:26 477

原创 cpp学习记录05:类和对象02

面向对象的语法思想都差不多继承的好处就是方便语法: class 子类 : 继承方式 父类。

2024-08-01 21:29:43 455

原创 cpp学习记录04:类和对象1

构造函数:类似java构造器,用于对象初始化语法:类名(){}析构函数:用于对象销毁前,执行一些清理工作语法:~类名(){}注意点:析构函数不可以有参数,所以也不可以重载如果不提供构造和析构函数,编译器会提供空实现的构造和析构函数。test();//在栈上,执行完后,会释放这个对象也就会执行析构函数。

2024-07-31 15:18:01 650

原创 Java学习记录10:Stream API

Stream API把函数式编程风格引入到Java用来针对集合进行多个数据的计算(排序,查找,过滤,映射,遍历等)

2024-07-26 17:22:31 236

原创 java学习记录09:Lambda表达式与引用

例子:格式:-> : lambda操作符-> 的左边: lambda形参列表,对应着要重写的接口中的抽象方法的形参列表。->的右边:lambda体。对应要接口的实现类要重写的方法的方法体。

2024-07-25 15:46:26 347

原创 cpp学习记录03

定义:用户自定义符合数据类型,可以包含不同类型的不同成员。基本用法(类似class)

2024-07-24 16:54:49 525

原创 java学习记录08

格式//泛型类//泛型接口T t;//声明变量的类型为Tthis.t = t;return t;this.t = t;继承//不是泛型类//不是泛型类//这个是泛型类//简单点说有不确定类型的就是泛型类使用说明:1.在声明完自定义泛型类后,可以在类的内部使用类的泛型。2.创建自定义泛型类的对象时,没有指明泛型参数类型,则泛型对应类型按照Object处理,但不等价于Object3.泛型指定中只能用引用数据类型说明:多个泛型参数用,隔开<E1,E2,E3>

2024-07-24 13:25:00 117

原创 java学习笔记06

用来解决引用数据类型的大小比较两种方法:comparable(自然排序),comparator(定制排序)

2024-07-19 13:30:30 189

原创 java学习笔记07

addAll是把Collection中的所有元素添加进去,add是把Object当作一个整体添加。

2024-07-19 08:54:34 1064

原创 cpp学习记录2

野指针:被声明但未初始化(赋值)的指针。这个指针会指向随机的内存空间,可能导致位置问题。三类:指向const的指针,const指针,指向const的const指针。指针指向区域已经被回收(delete),这种问题称之为:指针悬挂。C++变量,数组创建是自动分配内存的,称之为静态内存分配。指针:特定类型数据在内存中的储存地址,即内存地址。表示指向区域的数据,是不变的,但可以更换指向。需要手动的管理内存,即手动分配,用完清理。表示指针本身不可更改,但指向的数据可以更改。指针和指向的区域的值,都不可改变。

2024-07-18 18:50:42 366

原创 cpp学习记录

a是可执行文件名称(自己起) hello_world22.cpp是源文件名称。5.数组变量不记录数据,记录的是地址。‘\0’ 是结束标志也算是一个字符。if else switch跳过。入门必备 helloworld。2.固定大小(无边界检查)1.任意类型均可构建数组。单工程多main设置。

2024-07-17 19:50:04 199

原创 MAPF论文解读---SCRIMP

MAPF相关交流欢迎添加v:s1624570336这篇文章发表在2023年的IROS上,是在这个领域中比较有名的工作PRIMAL/PRIMAL2的基础上做的创新,主要思路就是说以往的分布式系统,由于每个agent只有局部视野,没法得到足够的信息,所以通过增加agent之间的交流机制来增加agent的观测信息以获得更好的规划。之前也有一些其他的基于communication learning的方法,但是那些方法都受限于agent的规模(基本无法解决64个agent以上的任务)。

2024-06-04 18:03:42 561 1

原创 JAVA学习笔记05

1.可以给类的非静态对象赋值的位置有:>默认初始化 >显式初始化,代码块中初始化 >构造器中初始化 (按顺序的)>有了对象后通过 对象.属性的方法赋值被abstract修饰的类不能实例化被abstract修饰的方法 只有方法的声明没有方法体包含抽象方法的类,必须是抽象类继承抽象类的子类必须重写抽象类中的抽象方法abstract不能与哪些关键字共用?不能用abstract修饰私有方法,静态方法,final的方法,final的类。

2024-05-28 19:58:46 1058

原创 JAVA学习笔记04

this关键字就是用来指向对象属性的,来区分属性名和形参名相同的情况this可以调用的结构:成员变量,方法,构造器this调用构造器的情况:多个构造器,其中有大量重复的部分,可以用this指定调用一个构造器,减少冗余。格式:this(形参列表);这个调用必须放到当前构造器的首行。

2024-05-07 19:44:18 472

原创 JAVA 学习笔记03

java类及类的成员:属性,方法,构造器;代码块,内部类面向对象的特征:封装,继承,多态其他关键字的使用:this,super,package,import,static,final,interface,abstractJava中内存结构的划分:虚拟机栈,堆,方法区,程序计数器,本地方法栈虚拟机栈:以栈帧为基本单位,有入栈和出栈操作;每个栈帧入栈操作对应一个方法的执行堆空间:new 出来的结构(数组,对象)方法区:加载的类的模板结构。

2024-04-17 21:32:51 549

原创 JAVA 学习笔记02

重点就在于内存解析,二维数组就是创建个一维数组然后一维数组中的每个值存放的是另一个一位数组的地址,从图上就能很好看出来。数据结构:声明的数组变量名会被存放到对应方法的栈帧中它的值是数组值的内存首地址,数值的值存放在堆中对外只暴露首地址值。数组的索引,表示了数组元素距离首地址的偏离量。因为第1个元素的地址与首地址相同,所以偏移量就是0.所以从0开始。比较两数组内容是否相等 Arrays.equals。数组没有length是属性,String有。2为什么数组要从0开始编号,而不是1。引用数据型数组:null。

2024-04-10 18:51:04 155 1

原创 强化学习 Q-learning

在介绍Q-learning之前先介绍两种学习策略:1)Monte Carlo 2)Temporal Difference(TD) Learning.

2024-04-08 15:02:37 581

原创 Java 学习笔记01

类(class),数组(array),接口(interface),枚举(enum),注解(annotation),记录(record),字符串(string):byte (1字节8bits -128--127)/ short(2字节) / int(4字节) / long(8字节)需要提供后缀'l' 或 'L'逻辑运算符:&,&& ( “与”);算数运算符:+,-,*,/,%(取余操作,正负与被取余数符号相同),++,--赋值运算符: =,+=,-=,*=,%= 这种操作不会改变原变量类型。

2024-04-07 19:38:40 768

原创 强化学习 学习记录(3)

这个表格中带有数字的是普通状态,灰色的是最终状态,普通状态可以执行的行动是任意方向移动(上下左右),当行动会移出表格时,行动变为呆在原地不动,任意方向的行动都是等概率的,且获得奖励都为-1。配合代码就很好理解这个迭代过程了,我们也可以看到当policy evaluation确定下来后,最优行动策略也就被确定下来了,就是沿着state-value 最大的方向走。如果环境模型是完全已知的,那这个方程就变为一个可计算的线性方程,设置初始状态为任意值,进行迭代。单单这样讲挺难理解的,来看这个例子就懂了。

2024-03-14 17:03:00 869 1

原创 强化学习 学习记录(2)

我们将从开始到终止的整个过程叫做一个episode,每个episode 都会以一个终止状态来结尾,然后后面会再接一个开始状态来开始一个新的episode。每个episode相互独立。这个过程中的agent代表的是进行决策部分而environment 代表的是 agent的外部,这与现实意义上的概念又区别,比如以人为例子,当我们想举手时,大脑是我们的agent来控制这个行为,而我们的手臂是environment。这个式子表示,当前时刻的状态和奖励仅和之前一刻的状态和行动有关于再之前的状态和行动都无关。

2024-01-25 17:32:24 935

原创 Git 笔记

3.会生成两个文件不带.pub后缀的是私钥文件,带.pub的就是公钥文件。2 git reset --hard HEAD^ 回退到上个版本 丢弃修改的工作区 和 暂存区的内容。1 git reset --soft HEAD^回退到上个版本 保存修改的工作区 和 暂存区的内容。找到想退的版本号然后:git reset --hard <版本号>查看配置: git config --global --list。提交: git commit -m 只会提交暂存区中的文件。

2024-01-03 22:08:25 366 1

原创 Reinforcement learning:an introduction 课后习题

设 两个行动分别为a1​a2​Qt​a1​Qt​a2​,即行动a1​为greedy actionPAt​a1​1⋅1−ε1⋅ε⋅0.5=0.75。

2024-01-03 16:23:28 1091 1

原创 强化学习 学习记录

强化学习是做什么的:在于环境的交互中以最大化奖励函数为目的更新智能体的策略与有监督学习的区别:在强化学习中无法获得大量即正确有具有代表性的训练数据与无监督学习的区别:无监督学习目的是为了找到数据中的隐藏结构,而强化学习中找到隐藏结构不一定能使奖励函数最大,其最终目的还是获得最大奖励函数最主要的区别:强化学习的训练数据是用于评估的而不是用于指导的:一个具有交互能力,有具体目标的主体:agent 的外部:agent 在给定时间的行动方式:完成一次交互后用于更新policy的值。

2024-01-03 16:23:07 976 1

原创 对于Pytorch autograd的一点理解

Pytorch在autograd的时候主要分为两步走,第一步也就是forward pass 也就是前向传播,第二步是backward pass 也就是反向传播。autograd 的数学基础就是链式法则,学过高数的应该多多少少有一定概念,这里也就不在多说了。刚刚入门深度学习,仅谈论我自己对与autograd的一点认识,如有错误还请大佬指正。这样一个公式 要求 w对于Z的导就是这样一个流程。在进行反向传播的时候主要干三件事。在前向传播时主要干了两件事。

2023-09-25 20:17:08 51 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除