自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [论文阅读笔记] 基于模型后门的联邦学习水印

软件学报 2023年八月 链接:基于模型后门的联邦学习水印。

2025-03-30 10:49:37 702 1

原创 【论文阅读笔记】基于模型水印的联邦学习后门攻击防御方法

后门攻击是一种在模型中嵌入后门的攻击方法,其攻击目标为保持全局模型在主任务上的良好性能前提下提高全局模型在目标任务中的性能。

2025-03-27 15:17:30 674 1

原创 Leetcode刷题记录--P72 编辑距离

即A通过插入、删除、修改字符的操作来变换成B字符串。在这里我们可以替换一下思路,我们在A中删除一个字符其实是等价于在B中插入一个字符的。:对于已经考虑过的A中前i-1个字符与B的j个字符,此时我们只需要在A的最后添加一个与B最后一个相同的情况即可。对于已经考虑过的A中前i个字符与B的j-1个字符,此时我们只需要在A的最后添加一个与B最后一个相同的情况即可。对于dp[i-1][j-1],此时A得第i个字符修改为B的第j个字符即可,得。inention -> enention (将 'i' 替换为 'e')

2024-10-06 16:44:59 346

原创 leetcode刷题记录--LCR081 组合总数

中的数字可以无限制重复被选取。如果至少一个所选数字数量不同,则两种组合是不同的。对于给定我们的目标target可以由数组。中所有可以使数字和为目标数。对于给定的输入,保证和为。

2024-09-28 21:23:58 176

原创 leetcode刷题记录--P17电话号码的字母组合(回溯法/DFS)

对于给定的数字字符串我们获取其中一个字符,找到这个字符对应的英文字符串,取这个英文字符串中的某个字符与其他数字字符对应的英文字符串中的字符进行组合。如示例一中的“23”,取字符‘2’对应的字符串"abc"中的一个字符,如'a',与‘3’对应的“def”中的各个字符进行拼接。在这里也有一点区别于全排列,通过按键按入的字符,数字在前那么对应字符也出现在前面,并且字符长度与数字长度是一致的。①对于给定的数字字符串digits,按照序号digitsIdx,利用map取出其对应的字符串strmap。

2024-09-26 16:56:17 528

原创 leetcode刷题记录--P200 岛屿的数量(深度优先遍历DFS)

找寻岛屿的数量,根据题目意思就是连成一块的陆地组成岛屿,即我们需要找寻在地图中有多少个连成一起的’1‘。遍历整个地图,如果找寻到’1‘,那么以这个’1‘为起始点对 其上下左右四个点进行遍历搜索,将其连在一起的所有’1‘进行标记,直到这一块区域不存在没有找寻过的’1‘位置。这里不存在会多统计的情况,因为我们以第一个’1‘开始,这个’1‘辐射出去的所有相连接的’1‘都会被搜寻到并且进行了标记,那么在下次遍历的过程中,就不会再次搜索到这个点。(水)组成的的二维网格,请你计算网格中岛屿的数量。

2024-09-26 10:47:04 527

原创 leetcode刷题记录--P130 被围绕的区域(回溯法/深度优先遍历)

这个题目我们可以类比围棋,当O上下左右被X包围的时候,那么这个棋子就被吃掉了,也就变成X了,但是当我们的O在边界的时候,这个棋子一定是活子。这个很容易理解,当边界有一个O时,连着这个O的其他O点也一定是活的,并且以此辐射出去,都是活的。根据上述思想,我们考虑可以利用深度优先遍历的思想,从四周的O开始进行深度优先遍历,将所有的活区域进行标记出来,死区域则进行修改为X。在这里进行标记的时候我们考虑将O变成其他非X的字符,如A字符,最后遍历棋盘的时候将A字符修改回O即可。

2024-09-25 20:23:35 488 1

原创 leetcode刷题记录--P733 图像渲染

这个函数被抽离出来就是DFS函数,我们需要的参数是image[][]表示初始给定的图画以及该图画的行数row和列数col,当前这个中心点的位置点坐标,curx和cury。该点原先的颜色:oldcol。对于给定的点修改颜色,如果其上下左右四个位置的颜色和该点原来的颜色相同,那么也需要修改颜色,并且继续以这些被修改过后的点为中心辐射出去渲染其他的点。同时为了保证程序不会进入死循环,我们可以定义一个二维数组flag[i][j],flag[i][j]=1表示(i,j)这个点已经被渲染过,不需要在被渲染。

2024-09-22 19:27:49 469 1

原创 leetcode刷题记录--P690 员工的重要性

首先定义一个sum记录该员工的总重要度,判断该员工是否存在下属,如果存在下属,那么将下属的重要度加入到sum中,并且继续探索该下属员工是否任然存在下属。如示例一中,探究ID1员工的重要度,我们发现它存在下属,先探索到ID2的下属,将其重要度也加入,之后发现ID2不存在下属,我们回溯到ID1的位置,其又存在另外一个下属ID3,将ID3的重要度加入,ID3不存在下属,再次返回ID1位置,继续探索发现ID1不存在下属了。你有一个保存员工信息的数据结构,它包含了员工唯一的 id ,重要度和直系下属的 id。

2024-09-22 18:57:45 441 2

原创 刷题记录--leetcode LCR 100 三角形最小路径和

(i-1,j-1)位置移动过来。保证路径和最小的情况,那么我们移动的时候就需要比较由(i-1,j)或者(i-1,j-1)位置移动到(i,j)哪个需要的代价更小。当i=j时,(i,j)只能由(i-1,j-1)移动到。其他情况: dp[i][j]=Math.min(dp[i-1][j-1], dp[i-1][j])+triangle.get(i).get(j);定义二维数组dp[i][j],表示的是从 顶点(0,0)到达(i,j)这个位置需要的路径和,初始化dp[0][0]=0。,找出自顶向下的最小路径和。

2024-09-21 20:38:18 236 1

原创 刷题记录--leetcode P55 跳跃游戏

定义一个一维数组dp[i],dp[i]表示从【0,i】可以到达的最远位置。如果前一次跳跃已经可以这次跳跃所达到的位置,那么dp[i]=dp[i-1],如果不如该次跳跃的位置,那么dp[i]=nums[i]+i;定义一个flag=n-1作为标记(n为数组的长度),从后往前遍历。如果nums[i]>=flag-i ,那么表明可以从前面这个位置跳跃到标记点,这时候让flag=i;无论怎样,总会到达下标为 3 的位置。可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。

2024-09-21 20:19:14 250

原创 刷题记录-leetcodeP132 分割回文串Ⅱ(动态规划 java版)

对于ans[2],考虑前两个字符的情况,如果这两个字符组成的字符串是回文串那么ans[2]=0,如果不是回文串,那么对这两个字符组成的字符串进行切割,切割为两个单一字符,第一个单一字符的切割次数就是ans[1],后面单一字符也一定是回文串,只需要+1即可,即ans[2]=ans[1]+1;ans[3]考虑前三个字符的情况,如果整体是回文串,那么ans[3]=0;j<i && [j+1,i]是回文串: ans[i] = min(ans[j]+1)。[1,i]是回文串: ans[i]=0。

2024-09-20 17:39:23 301

原创 背包问题总结(01背包、完全背包、多重背包)

你有一个背包,最多能容纳的体积是V。现在有n个物品,第i个物品的体积为vi​ ,价值为wi。(1)求这个背包至多能装多大价值的物品?(2)若背包,求至多能装多大价值的物品?输入描述:第一行两个整数n和V,表示物品个数和背包体积。接下来n行,每行两个数vi和wi​,表示第i个物品的体积和价值。输出描述:输出有两行,第一行输出第一问的答案,第二行输出第二问的答案,如果无解请输出0。

2024-09-19 11:56:20 2216

原创 刷题记录-leetcode LCP55 采集果实(java版)

二、如果采集的果实的数量大于背包的容量,那么需要采摘多次才能完成,并且采摘过程要求必须装完这类果实才能开始下一种。因此即使这次背包没有装满也不能装其他类型。一、如果每次采集果实的数量小于背包的容量,那么一次性就可以全部取完,时间也只会消耗一次。在新手村中,各位勇者需要采集一些果实来制作药剂。种类型的果实需要的时间(即每次最多可以采集。当前勇者需要完成「采集若干批果实」的任务,请计算并返回勇者完成采集任务最少需要的时间。

2024-09-18 22:54:46 280 1

原创 刷题记录-leetcode P62 不同路径(动态规划java版)

所以要想到达右下角(i,j)位置那么必须先到达点(i-1,j)或者点(i,j-1)。通过这一步我能能推出到达点(i,j)的路径条数就是到达点(i-1,j)和点(i,j-1)的路径数量的总和。边界处理:当位置处于i=0或者j=0的情况时,我们无法从这个点的上面i-1行或者这个点的左边j-1列位置过来。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。最后返回结果dp[m-1][n-1]为从左上角到右下角的路径条数。当i=0时:dp[i][j]=1;当j=0时:dp[i][j]=1;

2024-09-18 22:37:39 370

原创 刷题记录-leetcode P64 最小路径和(动态规划java版)

所以要想到达右下角(i,j)位置那么必须先到达点(i-1,j)或者点(i,j-1)。即比对到达点(i-1,j)和点(i,j-1)的路径和哪个更小。对于整个过程中我们需要注意的是,到达第一行和第一列的路径是不同的。同理第一行是只能从它左边到达。当i>0&&j>0时:dp[i][j] = min(dp[i−1][j],dp[i][j−1]) + grid[i][j];时间复杂度:O(m*n),其中 m 和 n 分别是网格的行数和列数。空间复杂度:O(m*n),其中 m 和 n 分别是网格的行数和列数。

2024-09-18 17:31:45 370

空空如也

空空如也

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

TA关注的人

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