自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 运行ConvE遇到的两个问题

我们无法修改安装的包名,只能忽略这个错误。上面两句话表示安装过时的包不报错的意思。发现是github拒绝连接。

2024-04-22 19:45:22 446

原创 解决报错:AttributeError: module ‘torch‘ has no attribute ‘irfft‘

再在当前文件页面搜索 torch.rfft 和 torch.irfft 将其改为 rfft 和 irfft 也就是把torch.去掉,再运行就好了。因为torch版本问题,新版本删除了irfft。但我不想降低torch版本。在使用了torch.irfft的文件中加上这段代码。

2023-10-09 10:51:42 614

原创 pycharm配置远程服务器

这里Root Path不管,直接根目录。再后面Mapping 的地方,Development path 选择之前创建文件夹的路径。这里Root Path填上服务器里创建的工作目录。后面Mapping 的地方,Development path 就写'/'。如上图所示,我们就找到了python解释器的位置了。作为我们的工作文件夹,这里就命名为hhr。选择我们刚刚创建的解释器的配置。

2023-10-07 18:24:22 227

原创 算法|图论 6 并查集

并查集的Union就可以用来初始化边与边之间的联系,不需要你手动去给每个根和节点赋值。

2023-09-15 14:50:23 475

原创 算法|图论 5

遍历所有的格子,首先判断不是陆地就continue,是陆地我们就对其四个方向进行侦测,若是海洋或边界则说明这个方向对应的有一个边可以当作周长加上。:给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] = 1 表示陆地, grid[i][j] = 0 表示水域。当你进入一个房间,你可能会在里面找到一套不同的钥匙,每把钥匙上都有对应的房间号,即表示钥匙可以打开的房间。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。

2023-09-15 14:49:46 352

原创 算法|图论 4

如果能在set中找到替换后的元素,说明可以走这一步,我们就将其入队,并且将set中对应的元素删除,防止出现反复走这一步的情况。下一步,直接通过遍历所有的海洋也就是标号为0的点,去看其四周的岛屿能不能链接起来,如果可以,我们就将对应岛屿的编号添加到unordered_set中去,并将对应的岛屿值相加到count中,再和result对比,取最大值即可。首先,通过深度优先遍历,将所有岛屿,按片为单位全部都标记下来,也就是同一片岛屿的编号相同,不同岛屿的编号不同。如果不存在这样的转换序列,返回 0。

2023-09-15 14:49:16 533

原创 算法|图论 3

这题总体思路就是遍历边界点(也就是能直接流进大洋的点),再逆流遍历,因为雨水往低处流,我们逆流遍历就可以找到所有大于边界的雨水高度的点,这些点就是可以直接流进大洋的点。给定一个 m x n 的整数矩阵 heights , heights[r][c] 表示坐标 (r, c) 上单元格。:给你一个 m x n 的矩阵 board ,由若干字符 'X' 和 'O' ,找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。当前单元格的高度,雨水可以直接向北、南、东、西流向相邻单元格。

2023-09-15 09:56:55 635

原创 算法|图论 2

给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格、1 表示一个陆地单元格。是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在。计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0。:给你一个大小为 m x n 的二进制矩阵 grid。在任意次数的移动中离开网格边界的陆地单元格的数量。就是多了一个不能走出界则将岛屿数加到结果中的操作。岛屿的面积是岛上值为 1 的单元格的数目。)的陆地单元格或跨过 grid 的边界。

2023-09-15 09:56:16 1340

原创 算法|图论 1 广度深度

用队列模拟广度优先,首先入队第一个遇到的陆地,然后遍历其上下左右的空间,是陆地就入队且淹没,非陆地就不操作,不断进行,直到全部变为海洋为止。graph[i] 是一个从节点 i 可以访问的所有节点的列表(即从节点 i 到节点 graph[i][j]存在一条有向边)。:给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。,请你找出所有从节点 0 到节点 n-1 的路径并输出(

2023-09-15 09:55:44 376

原创 算法|Day51 单调栈2

是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。:给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回。:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。用单调栈来解题,递增的单调栈,由于栈顶每次都是最小的元素,我们接雨水其实就是。

2023-09-13 17:15:55 97

原创 算法|Day52 单调栈3

这题我们就是以每个柱子为基准,找到左边第一个比它矮的柱子left,右边第一个比它矮的柱子right,由于左右都比它矮,所以算矩形的时候肯定不能带上左右的柱子,中间的宽度也就是right - left - 1.这样就得到了宽度,我们再取以当前柱子为基准的高度,相乘再取result的最大值即可。找不到右边比其小的柱子,所以无法操作。当前我们遍历到20的时候找不到左边比其小的柱子,就不会进行正常的操作,也就是不会取50这个柱子单独的面积,所以我们应该在开头也加上一个0,以保证正常操作。我们来看如下两种情况。

2023-09-13 17:15:25 126

原创 算法|Day50 单调栈1

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。对于每个 0 <= i < nums1.length ,找出满足 nums1[i] == nums2[j] 的下标 j ,并且在 nums2 确定 nums2[j] 的。将单调栈的操作用在nums2中,使用递增的单调栈,栈顶永远保持最小的元素,遇到比栈顶大的元素的时候就去nums1中找对应元素的下标,然后存入当前的比其大的值即可。

2023-09-13 17:14:43 168

原创 算法|Day49 动态规划17

可以很容易找到递推关系,也就是dp[i][j]是否是回文子串我们只需要先判断s[i] 是否等于s[j],然后在看dp[i+1][j-1]也就是缩小范围后是否是回文子串,就能推出dp[i][j]依据递推公式我们可以看出,dp[i][j]是由左下角的状态推导而来,故我们应该从下往上,从左往右遍历。当 i == j的时候值为1,其余全部都为0,也就是每个字符串本身是回文子串,其余的全部默认为0。可能上来就会想dp[i][j]定义成,在这个范围内回文子串的个数,这样定义不好找递推关系,定义成。

2023-09-13 17:14:02 182

原创 算法|Day48 动态规划16

dp[0][j]同理。dp[i][0] 表示以下标i-1为结尾的字符串和空串相等所需要操作的最少步数,故应该是i,故dp[i][0]=i, dp[0][j]同理。依据递推公式我们可以看出,dp[i][j]是由左边和左上的以及上面的状态推出的,所以我们从上至下,从左向右遍历即可。依据递推公式我们可以看出,dp[i][j]是由左边和左上的以及上面的状态推出的,所以我们从上至下,从左向右遍历即可。dp[i][j]:代表字符串1以i-1下标为结尾的部分和字符串2以j-1为结尾的部分,转换所需要的最小操作数。

2023-09-13 17:13:09 170

原创 算法|Day47 动态规划15

故dp[i][j-1]表示以下标i-1为结尾的字符串s,和以下标j-2为结尾的字符串t,相同子序列的长度为dp[i][j-1],也就是我们没有用j-2这个下标的字符,模拟了删除这个字符的操作。dp[i][j] = dp[i][j-1]相当于是删除了当前的下标元素的t中的字符,使其等于前一个没有用当前下标j的字符t的情况。依据递推公式可以看出dp[i][j]依赖于dp[i-1][j-1]和dp[i][j-1]故我们从上到下,从左到右遍历即可。故应该是dp[i][j] = dp[i-1][j-1]+1。

2023-08-21 09:41:02 211

原创 算法|Day46 动态规划14

为什么要这样定义呢,方便dp数组的初始化,若dp[i][j]代表从0-i最长公共子序列,那我们dp[0][i]就都得判断,看是否两个对应位置字符相等,来进行初始化。为什么要这样定义呢,方便dp数组的初始化,若dp[i][j]代表从0-i最长公共子序列,那我们dp[0][i]就都得判断,看是否两个对应位置字符相等,来进行初始化。主要就是两大情况: text1[i - 1] 与 text2[j - 1]相同,text1[i - 1] 与 text2[j - 1]不相同。

2023-08-19 10:00:06 1230

原创 算法|Day45 动态规划13

可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。dp[i][j] :以下标i - 1为结尾的A,和以下标j - 1为结尾的B,最长重复子数组长度为dp[i][j]。即当A[i - 1] 和B[j - 1]相等的时候,

2023-08-18 11:03:34 194 1

原创 算法|Day44 动态规划12

给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格;如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。从递归公式其实已经可以看出,一定是从前向后遍历,因为dp[i],依靠dp[i - 1]的数值。这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。dp[i][0]表示持有股票,dp[i][1]表示不持有股票。第一天持有也就是dp[0][0]设置为prices[0]。dp[i][j]:i表示第几天,j表示当天的状态。

2023-08-17 09:26:55 56

原创 算法|Day43 动态规划11

dp[i][1]表示第一次买入,dp[i][2]表示第一次卖出。dp[i][3]表示第二次买入,dp[i][3]表示第二次卖出。第二次买入依赖于第一次卖出的状态,其实相当于第0天第一次买入了,第一次卖出了,然后再买入一次(第二次买入),那么现在手头上没有现金,只要买入,现金就做相应的减少。使用二维数组 dp[i][j] :第i天的状态为j,所剩下的最大现金是dp[i][j]第0天没有操作,这个最容易想到,就是0,即:dp[0][0] = 0;同理第二次卖出初始化dp[0][4] = 0;

2023-08-16 08:51:15 41

原创 算法|Day42 动态规划10

那么dp[0][0]表示第0天持有股票,此时的持有股票就一定是买入股票了,因为不可能有前一天推出来,所以dp[0][0] -= prices[0];那么dp[0][0]表示第0天持有股票,此时的持有股票就一定是买入股票了,因为不可能有前一天推出来,所以dp[0][0] -= prices[0];dp[0][1]表示第0天不持有股票,不持有股票那么现金就是0,所以dp[0][1] = 0;dp[0][1]表示第0天不持有股票,不持有股票那么现金就是0,所以dp[0][1] = 0;你也可以先购买,然后在。

2023-08-15 13:04:38 227

原创 算法|Day40 动态规划9

一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,长度为2的数组,dp[0]代表不偷该节点所能得到的最大价值,dp[1]代表偷节点。dp[0]初初始化为第一个房间的钱数量,dp[1]初始化为第一个房间和第二个房间金额最大值。:你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。一个房间只有两个状态,偷or不偷,我们如果偷当前房间,那就是。

2023-08-14 09:39:23 124

原创 算法|Day40 动态规划8

如果确定dp[j] 是true,且 [j, i] 这个区间的子串出现在字典里,那么dp[i]一定是true。所以递推公式是 if([j, i] 这个区间的子串出现在字典里 && dp[j]是true) 那么 dp[i] = true。:给你一个字符串 s 和一个字符串列表 wordDict 作为字典。用完全背包的思路来写这题,并且是求排列,所以先遍历背包容量,再遍历物品。不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。dp[j]:由字典中的字符串能不能组成从下标0到下标j的字符串。

2023-08-12 09:02:40 59

原创 算法|Day39 动态规划7

本题我们每次取出coins[i]后,就还剩下j-coins[i]需要取,所以我们可以用dp[j-coins[i]]来表示取出取出coins[i]后,我们还需要多少枚硬币,而再+1这个1表示的是当前取硬币,多一个。dp[j] += dp[j - i](i代表物品,也就是每次爬的台阶数,范围是[1,2])用完全背包的思路来写这题,我们应该先遍历物品,再遍历背包,正序遍历背包容量。数字正序遍历,背包容量正序遍历,如果是初始值就跳过,防止int超出范围。dp[j] 表示:凑成总金额为j,最少用多少枚硬币。

2023-08-11 09:29:04 49

原创 算法|Day38 动态规划6

个人理解就是如果我们后遍历物品时,这题来看,就会有取1和取2的情况,如果容量是3的时候,我们取1那就剩下2,我们再取取dp[2]就好了,如果取2,那就剩下1,取dp[1]就好了。

2023-08-11 09:28:30 47

原创 算法|Day37 动态规划5

力扣题目描述:有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。如果 x == y,那么两块石头都会被完全粉碎;如果 x!= y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回 0。解题思路。

2023-08-09 09:27:02 30

原创 算法|Day36 动态规划4

就是dp[i][j-weight[i]]+value[i] ,因为当我们取 物品i 时,也就是需要将物品i的重 量减去并且加上其价值。所以递推公式也就是dp[i][j] = max(dp[i-1][j],dp[i][j-weight[i]]+value[i]);就是dp[j-weight[i]]+value[i] ,因为当我们取 物品i 时,也就是需要将物品i的重 量减去并且加上其价值。使用一维数组,也就是dp[j] = max(dp[j],dp[j-weight[i]]+value[i]);

2023-08-08 10:29:22 698

原创 算法|Day35 动态规划3

我们每次可以选取 <i 的所有元素,使其成为根节点,其左子树就是有dp[j-1] 右子树就是有 dp[i-j]种 构成方式。两种方式组合就是dp[j-1] * dp[i-j] 我们再将其 加等于 dp[i]。也就是dp[i] += dp[j-1] * dp[i-j]那么从1遍历j,比较(i - j) * j和 dp[i - j] * j 取最大的。递推公式:dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j));可以想 dp[i]最大乘积是怎么得到的呢?

2023-08-07 09:33:24 21

原创 算法|Day34 动态规划2

那么从1遍历j,比较(i - j) * j和 dp[i - j] * j 取最大的。递推公式:dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j));机器人每次只能向下或者向右移动一步。dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。比较dp[i]是因为每次dp[i]都是拆分的一个结果,我们每次取结果的时候选最大的。

2023-08-05 09:28:58 660

原创 算法|day33 动态规划1

因为爬到第n个楼梯,我们只有两种方式,也就是从n-1处爬1步或者是n-2处爬两步,,但是我们 要支付最少的费用所以,dp[n] = min(dp[i-1] + cost[i-1],dp[i-2] + cost[i-2]);因为爬到第n个楼梯,我们只有两种方式,也就是从n-1处爬1步或者是n-2处爬两步,所以dp[n] = dp[n-1]+dp[n-2]由于第i个数的值是由i-1和i-2加起来的所以递推公式就是dp[i] = dp[i-1]+ dp[i-2];由题目,dp[0] = 0,dp[1] = 1;

2023-08-04 08:22:33 23

原创 算法|Day32 贪心6

当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增。:给定一个二叉树,我们在树的节点上安装摄像头。计算监控树的所有节点所需的最小摄像头数量。节点上的每个摄影头都可以监视。

2023-08-03 08:36:47 19

原创 算法|Day31 贪心5

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。:给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi]。:给你一个字符串 s。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s。

2023-08-02 11:13:45 14

原创 算法|Day30 贪心4

在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被 引爆。可以射出的弓箭的数量 没有限制。墙面上的气球记录在整数数组 points ,其中points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。

2023-08-01 10:36:40 19

原创 算法|Day29 贪心3

给定两个整数数组 gas 和 cost ,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。重点:B剩余的油>=A缺少的总油。必然可以推出,B剩余的油>=A站点的每个子站点缺少的油。:在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目。相邻两个孩子评分更高的孩子会获得更多的糖果。

2023-07-31 10:50:15 24

原创 算法|Day28 贪心2

每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处:0 <= j <= nums[i] ,i + j < n。返回到达 nums[n - 1] 的最小跳跃次数。:给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。:给定一个长度为 n 的 0 索引整数数组 nums。:给定一个非负整数数组 nums ,你最初位于数组的。数组中的每个元素代表你在该位置可以跳跃的最大长度。

2023-07-29 09:56:21 26

原创 算法|Day27 贪心1

对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;相反,[1, 4, 7, 2, 5] 和 [1, 7, 4, 5, 5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。例如, [1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3) 是正负交替出现的。:给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。是数组中的一个连续部分。

2023-07-28 15:35:37 21

原创 算法|Day26 回溯6

如果存在多种有效的行程,请你按字典排序返回最小的行程组合。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。例如,行程 ["JFK", "LGA"] 与 ["JFK", "LGB"] 相比就更小,排序更靠前。n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。:按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。

2023-07-27 10:55:28 25

原创 算法|Day25 回溯5

给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素。你可以按 任意顺序 返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。:给定一个不含重复数字的数组 nums ,返回其。:给定一个可包含重复数字的序列 nums ,返回所有不重复的全排列。总结:排列和去重的集合体。

2023-07-26 10:05:01 17

原创 算法|Day24 回溯4

给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 '.' 来形成。例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "192.168@1.1" 是 无效 IP 地址。:给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。

2023-07-25 09:31:26 24

原创 算法|回溯 03

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。:给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。注意:解集不能包含重复的组合。

2023-07-24 12:00:16 18

原创 算法|Day22 回溯2

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。返回 所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可以以任何顺序返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。所以有了如上的剪枝操作,我们每次进行剪枝一般都是在for循环中下功夫。每个数字 最多使用一次。

2023-07-22 11:20:41 26

空空如也

空空如也

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

TA关注的人

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