自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 DRL学习

深度强化学习

2022-10-01 12:23:04 179 1

原创 2022/04/27 leetcode 每日一题 417. 太平洋大西洋水流问题

1.题目2.求解这个题目的描述真的很让人迷惑,建议大家就是看看英文的描述: 其实题目想说的就很简单,从每个节点判断能否到达两边边界。如果将n*m的节点全遍历完,那所要花费的时间太长了。因此可以从边界开始遍历,分别从太平洋和和大西洋,分两部分遍历。即从左边和上面能到达的点,和从右边和下面能到达的点,每次只往等高或更高的点前进,能到则cnt++。两次遍历分别维护一个visit数组,进行记忆化搜索,加快运行速度,但是会消耗一部分内存。3.代码class Solutio...

2022-04-27 10:32:56 109

原创 2022/04/26 leetcode 每日一题 883. 三维形体投影面积

1.题目2.求解 简单题,当某一个位置存在非零数值的时候,记录一下横纵坐标最大值,cnt += 1 表示俯视图这个位置为1,三者求和即可。3.代码class Solution: def projectionArea(self, grid: List[List[int]]) -> int: n = len(grid) m = len(grid[0]) xli = {} yli = {} ...

2022-04-26 09:29:01 139

原创 2022/04/25 leetcode 每日一题 1866. 恰有 K 根木棍可以看到的排列数目(困难题)

1.题目2.求解其实题目看一眼能看出来使用动态规划求解,而且dp数组保存的状态也很清楚是什么,就是状态转移方程不太好想。首先dp数组 dp[i][j], i表示共有i根木棍,能够看到j根木棍。其次是状态转移方程,我自己的第一想法是固定最高的那一根的位置,那么在这一根木棍之前就需要存在k - 1根可看得见的木棍,即求和A(i - 1 - l, i - 1) * dp[l][j - 1] l为从k - 1到i - 1即可,l表示的是在最高的那一...

2022-04-25 10:58:33 111

原创 2022/04/121 leetcode 每日一题 868. 二进制间距

说点题外话,最近状态真的好差好差,希望自己能慢慢调节过来,也祝学习的各位努力有所回报。水逆退散!!!!!!!!1.题目2.求解简单题,通过lowbit去求得最低位的值,math.log获得位置,每次和前一位的位置相减即可。3.代码class Solution: def binaryGap(self, n: int) -> int: import math def lowbit...

2022-04-24 09:28:40 56

原创 2022/04/121 leetcode 每日一题 396. 旋转函数

1.题目2.求解每次循环的时候加上sum(nums)减去nums[-1] * length即是循环数组后得到的结果。 需要注意的是,得到的最大值可能是负值,因此初始化ans=-sys.maxsize。3.代码class Solution: def maxRotateFunction(self, nums: List[int]) -> int: ans = -sys.maxsize cnt = 0 ...

2022-04-22 09:25:00 291

原创 2022/04/121 leetcode 每日一题 824. 山羊拉丁文(简单题)

1.题目2.求解 依照题目给出的条件依次处理即可了,要注意的是元音开头所谓的aeiou小写大写都要进行判断,注意着点就好了。3.代码class Solution: def toGoatLatin(self, sentence: str) -> str: li = sentence.split(" ") ans = "" cnt = 1 for i in li: if c...

2022-04-21 08:51:15 455

原创 Leetcode 解数独

1.题目2.求解本题,一眼看过去想法,想尝试用动态规划求解,但是好像不太行,但是可以使用状压的一点点思想,也就是用二进制来保存当前状态,然后用搜索即可,因为数独只是一个9 * 9的数组,搜索范围不大,使用dfs找到唯一解直接退出所有搜索即可。3.代码int a[10], b[10], c[10];bool flag;int cnt;struct node{ int x; int y; int r; int remain;};node ma[8

2022-04-13 10:33:52 131

原创 2022/04/13 leetcode 每日一题 380. O(1) 时间插入、删除和获取随机元素

1.题目2.求解今天这题写的不是很好,但是我不知道从哪里去优化,今天这题就是正常的vector和map的简单应用。查找对应的基础使用方法即可。需要注意的是,记得插入的时候也需要判断是否vector内包含了val,如果是需要返回false3.代码class RandomizedSet {public: vector<int > li; unordered_map <int, int> idx; Ran...

2022-04-13 10:21:27 466

原创 2022/04/12 leetcode 每日一题 806. 写字符串需要的行数(简单题)

前一天忘了记录了,补一下1.题目2.求解这也是一道很简单的题目,但是我wa了一次,属于是太粗心了。常用的用char - 'a'得到index去数组里查找对应的width即可。 一定需要注意的是他需要判断每一行的末尾的那个字母是否会超出行距,知道这一点,其他的就都很简单了。3.代码class Solution {public: vector<int> numberOfLines(vector<int>& ...

2022-04-13 10:17:43 694

原创 leetcode 91. 解码方法

1.题目2.求解数据量不大,但是需要判断一些情况。 1、获取前一位和当前为所组成的数字所对应的解码>9(即是两位数) ① 当前位非零,则是dp[i] = dp[i - 2] + dp[i - 1] ② 当前位为零,dp[i] = dp[i - 2] 2、获取前一位和当前为所组成的数字所对应的解码0< x <9(即是非零个位数) dp[i] =...

2022-04-13 10:13:03 473

原创 LeetCode 1239. 串联字符串的最大长度(状压dp)

1.题目2.求解这道题似乎没有我想象的那么难,我用状压dp去求解似乎有点大材小用,效率也不是特别好。我看三叶姐用dfs+剪枝就做出来了,思索,我的脑子里是不是看到啥题都像DP :( 不管怎么说是写出来了,给大家讲讲我的想法,如果有状压dp基础的大伙们(我相信大家都很强)肯定知道用二进制数组表示当前状态,我用数组下标表示我取了哪些字符串,dp数组内仍为一个二进制数,26位的,也就是当前所取的字符串内包含的所有字符。 因为都是字符串操作,因此也就无法使用正...

2022-04-11 09:34:20 162

原创 2022/04/11 leetcode 每日一题 357. 统计各位数字都不同的数字个数 (标为中等的简单题)

1.题目2.求解很明显的排列组合问题,而且数据量很小,不需要求余操作,甚至不用longlong。计算时我将它分为两个部分,①:取0的情况 ②:不取0的情况当数字只有0位的时候需要特殊定义一下因为他们比较特殊。ans[0] = 1,1、取0的情况下,0只能放在除首位外的其他位置,共i位的情况,可选位置为i - 1,那其他的数字可选择的个数一共为 2、不取0的情况就很明显了,9个数,分配在i个位置就好了也就是 3、求和即可3.代码...

2022-04-11 08:28:45 74

原创 LeetCode 1626. 无矛盾的最佳球队(最大上升子序列)

1.题目2.求解第一眼看到毫无头绪,想着要不要暴力求解,因为数据量不大,只有1000。但是仔细想想又有点动规的味道,但是也没用办法用普通的动规,状压的话数据量又太大了(状压因为要用二进制保存当前状态,因此创建的dp数组数量级都是2^n)。 最后想到,如果按照年龄排序后,不就是一个最大上升子序列吗!!!那就非常简单了,sort排序,很简单的状态转移方程就结束了。上代码!3.代码struct player{ int age; int s...

2022-04-10 08:30:28 791

原创 2022/04/010 leetcode 每日一题 804. 唯一摩尔斯密码词(简单题)

1.题目2.求解今天是一道简单题,看见就大概知道怎么求的题目,就是不知道会不会有更好的办法。 讲一下我的方法,遍历每一个字母,去定义的数组内查找每个字母对应的字符串,拼接存到map里面就好了。等所有的words遍历完,查找map内有多少元素即可,很简单。3.代码class Solution { string nums[26] = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---"...

2022-04-10 07:51:17 99

原创 2022/04/09 leetcode 每日一题 780. 到达终点

1.题目2.求解今天这个题目标是困难题,但实际上感觉只要想到如何求解就很容易了,只需要把该判断的都判断好了就可以了。看到题目第一眼是不是想要从sx, sy往tx, ty加,想要找个方法加上去。但其实不是这样的,因为我们无法考虑到到底是x = x + y还是y = x + y。但是如果我们从tx, ty 减到sx, sy就很明确了,只能是ty - tx。 那么清楚了这一点后,我们只需要考虑tx, ty中大的那一项要减几倍小的那一项即可。...

2022-04-09 10:31:52 78

原创 2022/04/08 leetcode 每日一题 429. N 叉树的层序遍历

1.题目2.求解今天的题目很丢人,不难,但不是自己做出来的,我的想法是每次遍历子节点的时候,将子节点存入queue,同时根据父节点的层数,保存本节点的层数,为此我创建了一个数组。但是我忽略了一件事就是树中是可能出现重复数据的,这会导致数据被覆盖掉。实际上用一个很简单的方法就能够解决,将子节点保存在另一个队列中即可,等当前队列中所有数据都输出完了,再对子节点进行处理就好了。 今天真的是脑子不好使了属于是。3.代码我就不放自己的代码了这是一位...

2022-04-08 21:09:09 344

原创 Leetcode 2172. 数组的最大与和(状态压缩)

1.题目2.求解这是一道隐藏的状态压缩题,我看到第一眼,根本没想到是状压dp。常态的状压dp题是使用二进制保存数据的当前状态,而这里面的状态一般只有取(1)和不取(0),这也是我们最常用的。但是在本题中,为三进制状压dp,三进制保存篮子里已存放了0, 1, 2个整数,不像二进制可以使用GCC中的 __builtin_popcount() 函数可以直接获得当前存放到第几个整数。三进制需要我们手动遍历求余取和。除此之外,在状态转移方程的位置二进制可以直接使用位运算 1<<n,但是三进

2022-04-07 11:05:25 807

原创 2022/04/07 leetcode 每日一题 796. 旋转字符串(简单题)

1.题目2.求解这是一道简单题,我居然还wa了一次,自闭。第一次写的代码对题目的理解不够透彻。 实际上这道题只需要判断两个点,1.两个字符串是否等长 2.(s + s) 中是否包含goal。上代码!3.代码class Solution {public: bool rotateString(string s, string goal) { if(s.size() == goal.size() && (s + s)...

2022-04-07 10:56:22 57

原创 2022/04/06 leetcode 每日一题 310. 最小高度树(树形dp)

1.题目2.求解看到题目第一眼,想到两种求解可能 1.树形dp 2.并查集树形dp是我学过的dp里面学的最烂的 所以我想着有没有暴力或者贪心的算法求解,怎奈我脑子没那么灵光。最后是参考了三叶姐(Leetcode的一位大牛)的dp写法。其实这道题没有很难,是树形dp题的简单拓展,增加了对父节点的判断,两个dfs都是基础模板里也需要的。(说的很简单,其实我写的时候完全忘了 我可太菜了)这题就是默认从0节点起步,每次判断子节点中最深的那条的深度和父节点的深度进行比较取较大的那条。最后对所有

2022-04-06 14:48:44 521

原创 2022/04/05 leetcode 每日一题 762. 二进制表示中质数个计算置位

1.题目2.求解看到这题的时候我第一想到的是数位dp的方式去求解 但是太久每做数位dp 模板忘了 待我再去学习一下数位dp的题目再来看看这道题会不会有新的想法 这道题最后使用了lowbit去求解,对一个数的二进制找到它的最后一位1,减去即可,cnt共有多少个1,质数方面因为 10的6次方<2的20次方 因此开个20的数组就好了 20以内的质数掰着手指头数出来(笑)3.代码class Solution {public: bool zhishu[25];...

2022-04-05 10:37:40 966

原创 2022/04/04 leetcode 每日一题 307. 区域和检索 - 数组可修改(线段树)

1.题目2.求解这道题看通过率,一半,也说明了应该也是道简单题,很简单的线段树,甚至感觉用线段树都有些奢侈,因为这道题没有用到区域修改(个人认为这才是线段树的精髓)。除此之外区域求和也是线段树的一个特点,因此也是很容易想到要用线段树求解。(我虽然想到了 但是太久没做线段树的题目了导致我忘了流程是啥样的)那么说啥都没有直接上代码来的直接,冲冲冲!3.代码class NumArray {public: int Sum[30005 << 2];

2022-04-04 12:10:01 650

原创 1945. 字符串转化后的各位数字之和

怎么说呢 很无聊的一道简单题 数据量小范围小 没啥特判 我写的代码感觉可能复杂了些 应该有很多大牛写的很简洁不过无所谓 展示一下我的写法嘛1.题目2.代码class Solution {public: string ItoS(int i){ string ret = ""; while(i > 0){ int c = i % 10; ret = char(c + '0') + ret;..

2022-04-03 21:00:49 44

原创 剑指 Offer II 099. 最小路径之和

1.题目2.求解这么高的通过率也是证明了这道题十分的简单,数据量也不大,数据范围也很小 基本上没什么需要注意的地方。题目一看只能向右或向下走,就很明显的是一道简单的DP模板题,只需要稍微特判一下第一行和第一列即可,很简单,直接上代码!3.代码class Solution {public: int minPathSum(vector<vector<int>>& grid) { int dp[205][205];

2022-04-03 20:22:57 53

原创 2022/04/03 leetcode 每日一题 寻找比目标字母大的最小字母(简单题)

先说句其他的话:从今天开始 我想每天把leetcode做的题都记录一下 第一是因为我身边的一位大牛有在写 (以后啥时候心血来潮可能会@他 哈哈哈)其次是也是想记录一下现在的情况 不然怕回过头来看自己这段时间的学习像是啥也没干好的 不多说废话了 我的学习记录就从一道简单题开始 :)1.题目通过率还是很高的 这题目还是很明显是用二分就可以求解出来的 不过是需要特判一下 我的判断语句是找到r - l == 1时退出循环,因为没有必要继续了 其次是党mid值小于等于target的时候需要继续往后找.

2022-04-03 10:09:30 566

空空如也

空空如也

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

TA关注的人

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