强化学习

强化学习(reinforcement learning,RL)讨论的问题是智能体(agent)怎么在复杂、不确定的环境(environment)里面去最大化它能获得的奖励。

强化学习概念

智能体

做出动作,并影响于环境

环境

返回作用后的状态,和上一步的奖励

奖励

是由环境给可显示智能体在某一步采取某个策略的表现如何?

Read more

Python数据结构

数据类型

列表(List)

是 Python 中使用最频繁的数据类型。

列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#定义
list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ] # 定义一个列表
tinylist = [123, 'runoob']
L = []
classmates = ['Michael', 'Bob', 'Tracy']
#获取长度
len(classmates)
3
#用-1做索引,直接获取最后一个元素
classmates[-1]
'Tracy'
#添加和删除
classmates.append('Adam')
classmates.pop(1) #用pop(i)方法,其中i是索引位置
#返回列表元素最大值
max(list)

Read more

栈与队列

栈与队列是常用的数据结构,其中栈提供先进后出,队列提供先进先出,这样的数据结构可以解决一些需要顺序解决的问题。在java中实现底层是不一样的原因是栈是以底层容器完成其所有的工作,对外提供统一的接口,底层容器是可插拔的(也就是说我们可以控制使用哪种容器来实现栈的功能)。

在Java中,队列和栈是两种常见的数据结构,它们分别用于不同的场景,而它们的实现通常基于以下几种容器:

Read more

字符串

  • 字符串也就相当于一种字符数组,它在java中有许多的库函数比如:
  1. charAt(int index): Returns the character at the specified index in the string.

    1
    2
    String str = "Hello";
    char character = str.charAt(0); // Returns 'H'
Read more

数组

定义:

数组是存放在连续内存空间上的相同类型数据的集合。

知识

Read more

哈希表

一般哈希表都是用来快速判断一个元素是否出现集合里。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。Hash法的优势就是牺牲了空间去换了时间,在工业场景中也很适用。

实现理论

哈希函数打比方:就是将学生姓名映射为哈希表上的索引,通过特定编码方式生成hashCode。如果hashCode超过哈希表大小(tableSize),会进行取模操作以确保映射在表内。但如果学生数量大于表大小,可能导致多个学生映射到同一索引位置。

Read more

动态规划6

583. 两个字符串的删除操作

力扣题目链接

相比之前现在两个字符串都可以删除,

  1. 确定dp数组(dp table)以及下标的含义

dp[i][j]:以i-1为结尾的字符串word1,和以j-1位结尾的字符串word2,想要达到相等,所需要删除元素的最少次数

这里和原来的匹配长度的dp定义不同,

Read more

动态规划5

300.最长递增子序列

力扣题目链接

本题要先有一个逻辑,就是我们怎么确定一个状态转移,如果我dp要取这个数那么之前的状态怎么找,所以很明显需要两轮遍历,

Read more