自定义博客皮肤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)
  • 收藏
  • 关注

原创 【回溯Ⅰ】子集问题

回溯是一种算法,通常用于解决搜索问题、游戏问题、布局问题等。在回溯算法中,系统尝试在所有可能的选择中逐步构建解决方案,当发现当前的选择并不是有效的解决方案时,便回溯到之前的步骤,尝试其他的选择。这种方法通过深度优先的方式搜索所有可能的情况,直到找到解决方案或者确定不存在解决方案为止。选择:做出一个选择,尝试向前推进。约束:检查当前选择是否满足问题的限制条件。目标:检查当前选择是否是期望的解决方案。回溯:如果选择不满足约束条件或者不能达到期望的解决方案,就回溯到之前的步骤,尝试其他的选择。

2024-08-24 14:29:55 384

原创 【回溯Ⅱ】组合问题

问题就出在这个题目的candidates是重复的,还是candidates = [1,2,2,2,5],target = 5这个例子,三个2,不选第一个2+选第二个2,选第一个2+不选第二个2,实际是一样的。上面一题,在遍历数组的递归过程中,选择一个数字后,由于这个数字可以重复使用,因此idx不变化。这个test case的结果中出现了三次[1,2,2]是因为candidates中有3个2,结果中的两个2,可以是(第一个2,第二个2)、(第一个2,第三个2)、(第二个2,第三个2)。,并以列表形式返回。

2024-08-24 14:28:16 391

原创 【动态规划Ⅰ】斐波那契、爬楼梯、杨辉三角

动态规划是一种通过将原问题分解为相对简单的子问题来解决复杂问题的方法。基本思想是递归地将一个复杂的问题划分为许多更简单的子问题,存储这些子问题的每个子问题的解,并最终将存储的答案用于解决原始问题。通过缓存子问题的解,动态规划有时可以避免指数级的浪费。它通常用于优化问题,其中需要找到最佳解决方案。动态规划算法通常用于解决具有重叠子问题和最优子结构性质的问题。重叠子问题:原问题可以被分解为相同的子问题。这意味着在解决原问题时,我们可能多次解决相同的子问题。

2024-07-14 20:13:27 796

原创 【动态规划Ⅶ】买卖股票的最佳时机

这个blog总结买股票系列题目,一些题目加了特定的限制条件以后,就需要改变一下策略啦!

2024-07-14 17:45:27 998

原创 【动态规划Ⅱ】打家劫舍等一维动态规划

同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。

2024-07-14 17:44:34 990

原创 【动态规划Ⅲ】二维数组的动态规划——start到finish的不同路径

dp[i][j] 与p[i+1][j]和dp[i][j+1]相关,因为是需要的最低健康初值,那么自然是dp[i+1][j]和dp[i][j+1]中更小的那一个,但是最后怎么更新呢?我们从左上角开始进行动态规划,那么每个点需要记录到这个点需要的最小健康初值外,还需要记录到当前点的和,然而到一个点可以经过其左边or上边的点,这两个路径中,可能一个健康初值小,而另外一个健康值和更大,这两个因素都十分重要。如果重点是健康初始值的大小,那么选择蓝色路径,但是由于其和只有-1,重点右下角为-2,所需健康初值变成4;

2024-07-10 23:46:20 962

原创 【动态规划Ⅳ】二维数组的动态规划——最小路径和

定义一个和原数组一样大小的二维数组,进行状态转移,其实和上面是一样的,只是需要一个新的数组。i < row;j++){// 定义新的数组i < row;i++){//单独处理每行第一个,其只能由上一行第一个转移而来// 正常处理,由上一行的j-1和j较小的一个转移而来j < i;j ++)//每行最后一个只能由上一行最后一个转移而来i < row;i++)

2024-07-10 23:45:51 878

原创 【动态规划Ⅵ】背包问题 /// 组合问题

有一个容量为W的背包;现在有一些货品(体积wi,价值vi),总数为n。如果将一个货品放入背包,会消耗掉背包wi的空间,但同时会收获vi的价值。现在需要一个方案,选择一些物品,使背包能够装下,同时,收获的价值最大。这个问题就是背包问题~

2024-07-09 21:52:52 1326

原创 【动态规划Ⅴ】二维数组的动态规划——0/1矩阵、最大正方形

这个题目和上面是类似的,上面的dp[i][j]是以matrix[i][j]为右下角的,全部由1组成的正方形的数量,其实也就是以matrix[i][j]为右下角的正方形的最大边长。理解题意,是要我们找mat[i][j]离其周围的最近的0的距离,这里的周围是四个方向,上边[i-1][j]、下边[i+1][j]、左边[i][j-1]、右边[i][j+1]。可以先处理第一列和第一行,只要matrix[i][j]为1,dp[i][j]就等于1,同时统计的正方形子矩阵数量+1。【当然这里选择右下和左上的方向一样的】。

2024-07-09 21:51:56 1048

原创 Java基础语法Ⅰ【注释、关键字、字面量、变量】

具有特殊含义,用于表示语言结构、控制流程、数据类型等。在Java中,关键字是被保留的单词,不能用作标识符(如变量名、方法名等)。例如,在Java中,

2024-06-15 22:29:39 1185

原创 认识Java~

其实类的作用也是类似的,面向对象一大特性就是封装,将一些方法、属性封装起来,实现功能上的解耦。我们将某些特定的功能、属性封装起来行程一个类,然后像外暴露一定的接口,可以使用这个类的一些方法,访问这个类的一些属性。我们一开始学C语言的时候,我们要解决什么问题,就在main()函数中写相应的代码,这是面向过程的编程。这里有两次使用到了遍历数组,我们为了提高代码的复用性,我们可以把遍历数组这个功能单独写在一个函数中,在main()函数中需要的时候去调用这个遍历数组的函数即可。的,不需要预先编译成机器码。

2024-06-15 22:28:56 952

原创 超好用的AI插件—Fitten code【IDEA 和 VScode 安装】

Fitten Code是由非十大模型驱动的AI编程助手,它可以自动生成代码,提升开发效率,帮您调试Bug,节省您的时间。还可以对话聊天,解决您编程碰到的问题。根据自己的使用经验,真的非常好用!尤其是代码自动补全,我在vscode写python代码的时候,感觉它还是很智能的(不是智障),能够减少很大的工作量!安装好以后其实之前下载的插件文件可以删掉了,因为安装完成后在软件对应的plugin是文件夹下已经有了新的插件对应的文件👇。重启IDEA,之后注册登录以后就能够使用啦。下载完后官网主页,有安装步骤引导:。

2024-05-27 17:32:59 2779 2

原创 Linux服务器安装anaconda、配置pytorch环境

anaconda安装的时候,会默认创建一个base环境,创建base环境的时候默认安装一个版本的python。这个python版本是与安装的anaconda的版本对应的,我安装的2023.09版本的,对应python是3.11.5了。需要提前了解自己所需的pytorch版本对应的python版本【可以参考这个,官方的我没找到哪里看/(ㄒoㄒ)/~~比如我打算安装pytorch 2.xx系列的,3.8-3.11都可以,我就安装的3.9的。将上面的https下载链接替换成自己需要的版本对应的链接即可。

2024-05-27 17:32:28 1148

原创 多个虚拟环境下,pip install到底默认把包安装到了哪里???

前面两节是废话,可直接跳到最后一节👉👈。

2024-04-28 10:25:58 3709

原创 【神奇脚本】如何下载中小学各学科教材

这些脚本通常由非专业程序员编写,用于满足个人需求或改善特定程序的用户体验。在网页浏览器中,用户脚本通常是指用户使用**浏览器插件(如Greasemonkey、Tampermonkey等)**安装的脚本,用于修改网页的外观或行为。这些脚本可以用于自动填写表单、修改网页样式、过滤内容等。

2024-04-28 10:25:04 878

原创 【神经网络 基础知识整理】前向传播 && 反向传播

再对数据进行相应的处理,继续传下去,直到输出层;反向传播是从后往前传播的,从output层到input层的方向:目标函数(对应的损失函数)对某权重or某偏置(即神经网络中可训练的参数)。

2024-03-18 16:10:15 2086

原创 【神经网络 基本知识整理】(激活函数) && (梯度+梯度下降+梯度消失+梯度爆炸)

即便是x=0时,取其导数的最大值,依旧只有1/4,因此如果将sigmoid作为中间层的激活函数,在利用链式法则反向求导的过程中,很容易。表示,这其实就是一个线性表达,即便模型有无数的隐藏层,简化后依旧是上述的线性表达式,那么模型的拟合能力非常受限。梯度是根据链式法则,从后往前反向计算的。的时候,知道函数在某一点的导数其实就是在该点切线的斜率,反应了函数在该点的变化方向以及变化速率,注意这个方向其实是。Relu函数是一个分段函数,其每一段都是线性的,但由于分段使其在全局内是非线性的,音系Relu是一个。

2024-03-18 16:09:15 1596

原创 【大模型API调用初尝试一】智谱AI && 通义千问

大模型的参数非常庞大,功能非常强大,但是训练成本高昂,因此个人或者小企业自己去训练一个大模型是不可能的。大模型的API就是一个接口,类似MaaS,用户通过调用API访问大模型,获得大模型针对用户prompt(问题)的输出,一般输出是json格式的,然后我们利用这个输出进行后续的操作。上面例子传入大模型的message列表里面,有user的信息,也有assistant的信息,大模型实际响应的只有user对应的content,但是assistant的内容可以为大模型提供一些上下文或者提示。

2024-03-12 17:55:13 7446 1

原创 【大模型API调用初尝试二】星火认知大模型 &&百度千帆大模型

大模型API调用初尝试二科大讯飞—星火认知大模型单轮会话调用多轮会话调用百度—千帆大模型获取access_token单轮会话多轮会话科大讯飞—星火认知大模型星火认知大模型是科大讯飞开发的,直接使用可以点击星火认知大模型,要调用API的话在讯飞开发平台注册,之后点击进入控制台。注册后完成实名认证,可以领取各种新人礼包,白嫖一些tokens! 之后就去找官方API调用文档,星火大模型的API是通过websocket建立连接然后实现调用的,和通义千问通过HTTP协议调用、智谱AI直接用封装好的pytho

2024-03-12 17:54:07 2106

原创 【论文阅读】Membership Inference Attacks Against Machine Learning Models

机器学习即服务(Machine Learning as a Service,MLaaS),即将机器学习算法部署到云平台上,用户可以上传自己的数据集,利用MLaaS上的算法等资源训练一个model,然后用这个模型预测。比如超市可以训练一个模型预测用户的购物喜好。这里需要注意的是,大多数MLaaS平台,学习算法、训练过程、超参数的设定以及最终训练好的模型都不会对用户暴露,即MLaaS对用户是黑盒的,用户最终只能使用平台训练好的模型的预测输出。

2024-01-28 23:21:31 802 1

原创 【python】argparse解析参数的过程

但是后面的输出是什么?时又会去解析匹配命令行的参数,但是main_train.py的argparse解析器只有两个参数——model和gpu-index,命令行输入的却是——unlearn和seed,自然时无法匹配的,因此就会出现解析错误。另外,Python文件中顶格的代码,即顶层的代码是会被直接执行的,但是定义的class、function等只有在调用的时候才执行。的内容没有执行——即p1.py中的main()函数没有执行,没有输出那一行,因此p2.py中importp1.py,p1.py中的;

2024-01-28 14:55:44 961

原创 【English】水果单词小小汇总~~

废物研究生,只要不搞科研干啥都是开心的,啊啊啊啊啊科研要命。作为一个水果怪(每天不吃水果就要命的那种哈哈哈哈)突然发现竟然就知道什么apple、banana、orange!惭愧惭愧,正好兴致正浓,来整理一波。tip 1:可以自己在xmind的基础上改成自己喜欢的样子,再转pdf~🤭:xmind里面的水果图标(好了!

2023-12-24 23:24:38 1064

原创 【杂】如何修复视频--> Wondershare Repairit

近日换宿舍,从一个校区搬到另一个校区,突发奇想决定用相机录一点视频~ 浅浅尝试一下录vlog才发现做短视频也并非想象中那般容易,尤其是构思内容和文案,并且实施起来也会有很多问题,比如手拿着相机录真的很抖o((⊙﹏⊙))o.哈哈哈哈哈哈哈哈哈,以及……支持正版支持正版支持正版(但是还是等我有能力了有钱了再来支持吧,斯密马赛)这个软件很多人推荐,但是正版软件太贵。修复完成就能预览并下载啦~可能会现实修复失败,进入。之后就能正常使用啦~~在网上搜了一下,发现。高级修复需要导入一个。

2023-12-24 21:40:02 383

原创 【pytorch】pytorch加载的cifar10数据集,到底有没有经过归一化

也就是即便我的测试数据集没有经过归一化,由于模型还是在model.train()模式下,因此模型的BN层会自己调整,使得模型性能不受影响,因此在测试数据集上的accuracy达到了0.86,我就没有多想。后来我用模型的时候,设置了model.eval()后,依旧是直接用的dataset.data(也就是没有归一化),不管是在测试数据集上还是在训练数据集上,accuracy都只有0.10+,我表示非常的迷茫疑惑啊。由此可见,在model.eval()模式下,数据归一化对最终的测试结果有很大影响。

2023-11-06 17:28:54 1061

原创 【leetcode 力扣刷题】栈—波兰式///逆波兰式相关知识和题目

我们常看到的四则运算的计算式,比如2+3*(4-9),称为中缀表达式,人类去计算的时候知道这些运算符是有优先级的:()> */ > +-,但是让计算机去运算就有歧义了。上面的式子是很简单的,实际可以遇到很多层括号,计算机不会去括号的。因此就有了波兰式和逆波兰式。波兰式和逆波兰式里,没有括号,计算没有歧义。波兰式,也称为前缀表达式,即运算符在前面,数字在后面,上面的计算式转换成波兰式后为+2*3-49。

2023-09-13 22:52:57 497 1

原创 【leetcode 力扣刷题】栈和队列的基础知识 + 栈的经典应用—匹配

栈和队列是比较特殊的线性结构,特殊在于栈和队列中的元素不能随意的访问——对于栈,只能访问栈顶元素(用top()方法),只能向栈顶添加元素(用push()方法),只能从栈顶取元素(用pop()方法)。对于队列,则有两个开口,可以看作有两个口的管道,从一个方向把球塞进去(push()),从另外一个方向取出来(pop()),那么取出来的顺序还是和塞进去的顺序一样的,即。比如下图,依次入队是(出队也是)1,2,3,4,先放入栈A,再将栈A的元素依次取出并放入栈B,此时栈B内元素的出栈顺序也是1,2,3,4了。

2023-09-13 18:53:04 402

原创 【leetcode 力扣刷题】删除字符串中的子串or字符以满足要求

题目中给出了平衡字符串的定义——只有’Q’,‘W’,‘E’,'R’四种字符,并且每种字符的数量都是n/4。将字符串s看作是待替换部分s1和剩下的部分s2,将s1替换成其他字符串后,能够保证新的s1插入s2后四种字符的数量都是n/4。判断一个字符串是否是回文串的时候,使用的是双指针,一个left从下标0开始,一个right从s.size()-1开始,然后如果s[left] == s[right],left++,right–;其下标用left和right表示,s1是s中[left,right)这一段子串。

2023-09-10 23:09:02 436

原创 【leetcode 力扣刷题】回文串相关题目(KMP、动态规划)

如果以一个字符串作为中心,然后朝两边扩展,s[i~j]变成s[i-1~j+1],s[i-1~j+1]是否是回文串直接依赖于s[i~j]的,如果s[i~j]不是回文串了,再朝两边扩展是没有意义的。假设这个回文子串是s1,s除s1外的子串s-s1用s2表示,s^是s的逆序(反转)后的字符串,s1在s^中其实就是后缀,由于s1是回文串,所以s1 = reverse(s1)。理解题意,是要在words中找到两个字符串words[i]、words[j],使得words[i] + words[j]是回文串!

2023-09-08 20:37:53 612

原创 【leetcode 力扣刷题】字符串匹配之经典的KMP!!!

一个字符串从第一个字符开始的,不包括最后一个字符的子串;

2023-09-03 15:46:32 1655

原创 【leetcode 力扣刷题】数学题之数的开根号:二分查找

假设有函数f(x) = x^2 - C,其中C等于题目给出的x,函数f(x)的零点就是±根号C,其中正的那个向下取整就是答案。牛顿更新法首先将x0初始化为C,在(x0, f(x0))处的切线斜率为2*x0,切线与x轴的交点为x1 = (x0^2 +C/(2*x));用上面题的方法求得其向下取整的平方根ans,如果ans*ans == num,就说明其是完全平方数,如果ans*ans < num,说明其不是完全平方数。我们知道如果y>=2的话,y*y >= 2*y,所以我们不需要遍历1~x,只需要遍历。

2023-09-02 18:47:36 554

原创 【leetcode 力扣刷题】数学题之计算次幂//次方:快速幂

2023-09-02 15:15:14 633

原创 【leetcode 力扣刷题】数学题之除法:哈希表解决商的循环节➕快速乘求解商

判断dividend里面还能不能有一个完整的divisor,是需要|dividend| >= |divisor|,因为都变成了负数,即dividend <= divisor就证明dividend里面有至少一个divisor,商还能加上一部分。,即第一次是+7,之后是+(7+7),再下一轮是+[(7+7)+(7+7)],每一轮要加的是上一轮的2倍,这个两倍直接用add = add + add来实现,也不需要乘法。快速乘,即用加法来实现乘法,但是不是一个一个加,而是将数字每次翻倍,成倍成倍的加。

2023-09-01 21:59:29 537

原创 【leetcode 力扣刷题】汇总区间//合并区间//插入区间

因为当前答案数组的最后一个区间的left是比待加入的区间left更小的,答案区间数组中的区间是没有重叠的,那么答案数组中的最后一个区间的left肯定是大于再前面一个区间的right的,待加入区间的left肯定是比答案数组中倒数第二个区间的right更大的。

2023-08-30 21:56:52 323

原创 【leetcode 力扣刷题】字符串翻转合集(全部反转///部分反转)

‘ ’,就是找到了单词,应该直接保留:①slow == 0,表示这是第一个单词开始,单词前不能有空格,那么从当前的s[fast]!式子end == s.size() || s[end] == ‘ ’需要把end == s.size() 写在前面,如果把s[end] == ‘ ’写在前面而end = s.size()的话,就会出现下标越界。理解题意,其实和上一题反转单词是一样的思路,把前k个字符看成单词1,剩下的字符看成单词2,那就是把单词1和单词2交换顺序,单词内容的字符顺序是不变的。

2023-08-27 20:02:41 920

原创 【leetcode 力扣刷题】双指针///原地扩充线性表

这个方法先定义一个新的字符串ss,需要申请额外的空间。从前往后遍历s的时候,如果s[i]!= ‘ ’,ss[j] = s[i],直接复制s的元素;如果s[i] == ‘ ’,那么ss[j]/ss[j+1]/ss[j+2]分别赋值‘%’,‘2’,‘0’,直到遍历完s。【注意】需要先遍历s,统计s中空格的数量,以确定ss的长度为s.size() + 2 * count。public://先统计s中的空格数量i++){count++;//申请新的空间s.size()+2*count。

2023-08-27 17:55:08 480

原创 【leetcode 力扣刷题】双指针//哈希表 解决链表有环等问题

slow从虚拟头结点开始,移动Size-n次,相当于移动到了被删除结点的前面一个结点【如果是一定要移动到被删除结点,那么终止条件改成fast==null即可,这样相当于fast从第n个结点移动到Size+1的位置,走了Size+1-n次,slow刚好走到Size+1-n结点的位置】。,如果n=1,x=z,即index1指针从head开始,index2指针从slow与fast相遇的节点开始,两个分别向前移动,移动相同次数,index1和index2会相遇,相遇处即为入环处;slow和fast相遇之后,

2023-08-23 23:55:38 349

原创 【leetcode 力扣刷题】交换链表中的节点

2023-08-23 17:30:55 385

原创 【leetcode 力扣刷题】反转链表+递归求解

用一个slow指针,一个fast指针,初始slow和fast都为head【没有附加头结点时】,每次slow向后移动一个slow = slow->next,但是fast向后移动两个fast = fast->next->next。第一种方法最容易想到,从前往后遍历链表的同时,每次从原链表中取下当前节点,插入到新链表的开头。这个方法最好理解,也没有什么难度,先遍历链表取出各个节点的val,按原顺序存在vector中,在vector上实现回文判断,需要额外的空间……递归的时候需要一个指针,递归到最后向前返回。

2023-08-22 15:17:06 269

原创 【leetcode 力扣刷题】移除链表元素 多种解法

此时的新head对应节点的值是否等于val呢,如果等于val,那么新的头节点也要删除,删除以后head再次赋值head = head->next。——删除节点的时候,需要有当前节点currNode的指针,也需要其前驱节点preNode的指针【删除节点的时候,需要将其前驱节点的next指向后驱节点。③对于当前节点,判断是否满足题意,如果等于val就删除,那么包括当前节点head在内的这一段链表的头节点就是head->next,返回head->next;链表的定义就是递归的,因此可以考虑用递归的方法求解。

2023-08-21 22:35:21 364

原创 【leetcode 力扣刷题】链表基础知识 基础操作

删除节点时,将被删除节点的前面节点和后面节点连接起来的同时,断开被删除节点和其前面一个、后面一个节点的连接,并且要释放掉被删除节点的空间:pre->next = cur->next;delete cur。在链表中的一个位置插入节点,需要先断开插入位置前后两个节点的链接,再和这两个节点建立新的链接:先cur->next = pre->next;构成的,数据域是一个节点的数据,指针域存储下一个节点的地址,下一个节点依靠上一个节点的指针域寻址。将尾节点看作是下一个节点是null的节点,处理和其他节点一样。

2023-08-21 15:27:58 721

空空如也

空空如也

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

TA关注的人

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