自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 神经网路反向传播算法

m是代表样本数的参数,y的shape是(2, 1),其中2表示有2个输出,1表示只有1个样本。假设输入层到隐层的权重矩阵为W1,大小为4x3,隐层到输出层的权重矩阵为W2,大小为2x4。假设我们有一个三层的神经网络,输入层有3个神经元,隐层有4个神经元,输出层有2个神经元。通过这种方式,我们可以利用反向传播算法计算出梯度,并使用梯度下降等优化算法更新模型的参数,从而训练出更好的神经网络模型。,即第二层权重矩阵的形状,表示每个神经元与前一层的所有神经元之间的权重。,即每个神经元的误差项和。

2023-04-04 13:04:36 155

原创 ALBEF图文检索代码运行

ALBEF实验代码实录

2022-07-29 20:30:39 1628 8

原创 GitHub远程URLSSH与HTTPS相互切换

GitHub有两种上传方式,HTTPS和SSH

2022-07-20 11:03:32 469

原创 Leetcode之144. 二叉树的前序遍历

递归解法执行结果:解题思路:推荐b站讲递归原理的视频:https://www.bilibili.com/video/BV1fZ4y1p7M9?spm_id_from=333.999.0.0前序遍历、中序遍历、后续遍历,仅需更改void函数的遍历顺序即可;语言:C++class Solution {public: //注意,这里是void声明postorder函数 void preorder(TreeNode* root, vector<int> &re

2022-05-05 23:28:20 592

原创 Leetcode之61. 旋转链表

提交记录1执行结果:解题思路:首先找到k的位置;使k到尾指针的段为首段;然后使首段的next指向head;还有一些特殊情况,比如链表为空、1个节点,或k为len的整数倍,这些情况都直接输出链表,无需变换;(好吧我承认,特殊情况是我调bug补上来的,感觉自己的方法笨笨的,再去看看别人的方法)语言:C++class Solution {public: ListNode* rotateRight(ListNode* head, int k) { while(!he

2022-05-03 20:11:14 951

原创 Leetcode之234. 回文链表

提交记录执行结果:解题思路:见注释语言:C++class Solution {public: bool isPalindrome(ListNode* head) { //快慢指针找mid node ListNode *fast=head; ListNode *slow=head; while(fast){ fast=fast->next? fast->next->

2022-05-01 23:00:00 1110

原创 Leetcode之92. 反转链表 II

提交记录执行结果:解题思路:将l、r指针分别分配到区间开始位置与结束位置(注意边界问题);用p、q指针在反转区间开始反转链表(注意首先将反转区间的第一个结点的next指向空);将三短区间链接;语言:C++class Solution {public: ListNode* reverseBetween(ListNode* head, int left, int right) { while(left==right||head->next==NULL){ret

2022-04-24 01:02:07 1445

原创 Leetcode之160. 相交链表

提交记录执行结果:题目:解题思路:假设A前段为x,B前段为y,共同段为z,则:A=x+z,B=y+z;将链表A尾部接链表B,则:A=A+B=(x+z)+(y+z);将链表B尾部接链表A,则:B=B+A=(y+z)+(x+z);即使x与y长度不相同,但前三位(x+z+y)与(y+z+x)长度必然相同。语言:C++class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *hea

2022-04-19 22:44:54 823

原创 Leetcode之142. 环形链表 II

提交记录执行结果:解题思路:上图是leetcode平台“白鲨码农”分享的图,书籍是魏梦舒的《算法漫画》;其实这道题的数学逻辑很简单,没有图上那么复杂。还是原本的这个图,D、S1、S2,截至到第一次相遇,慢指针走了(D+S1)长度,而快指针走了(D+S1+S2+S1)长度。又由于快指针是慢指针2倍步长,因此:D+S1+S2+S1=2(D+S1),整理得:D=S2。因此,计算入环点时,仅需让快指针从head节点重新出发,步长为1,当两指针再次相遇,即为入环点。语言:C++class Sol

2022-04-19 19:59:48 664

原创 Leetcode之1669. 合并两个链表

版本1执行结果:解题思路:语言:C++class Solution {public: ListNode* mergeInBetween(ListNode* list1, int a, int b, ListNode* list2) { ListNode*p=list1; ListNode*q=list1; ListNode*m=list2; ListNode*n=list2; for(int i=0;i&l

2022-04-19 11:38:29 592

原创 Leetcode之206. 反转链表

提交记录执行结果:解题思路:【206.反转链表-哔哩哔哩】 https://b23.tv/2Lb5qG6首先,从head起申请左、右指针,分别指向head和head->next;将左指针的next指向空;右指针指向左指针(为了不让右指针的next丢失,之前需要先将右指针的next用临时指针tmp指向left->next);然后,左、右指针以及临时指针tmp平移;语言:C++class Solution {public: ListNode* reverseList

2022-04-17 22:57:14 393

原创 Leetcode之141. 环形链表

提交记录执行结果:题目分析:pos是给官方代码生成环形链表的生成后的链表即代码模版中的head你只需要判断这个链表是否环形注意理解题意解题思路:可以使用快慢指针法, 分别定义 fast 和 slow指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。为什么fast 走两个节点,slow走一个节点,有环的话,一定会在环内相遇呢,而不是永远的错开呢?首先第一点: fast指针一定先进入环中,如

2022-04-17 20:57:53 226

原创 Leetcode之2. 两数相加

提交记录执行结果:解题思路:链表题目一定要画图理解。该题实际就是加法的运算,只不过是数字的排列逆序罢了。还需要额外考虑需要进位的情况。以及两个加数位数不一致的情况。语言:C++class Solution {public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { //虚拟头结点 ListNode*res=new ListNode(0); ListNode*cur=res;

2022-04-16 22:29:42 588

原创 Leetcode之tag:链表

细节提升1.增加哨兵节点增加一个哨兵结点放在头节点的前面。 ListNode*first=new ListNode(0); first->next=head;2.链表为空一些应用背景的题目可以存在空列表时,记得考虑链表为空的情况。 while(!head){return head;}3....

2022-04-15 16:58:20 228

原创 Leetcode之24. 两两交换链表中的节点

提交记录执行结果:解题思路:增加一个哨兵节点,就不需要考虑第一组操作的特殊性;语言:C++class Solution {public: ListNode* swapPairs(ListNode* head) { ListNode*first=new ListNode(0); first->next=head; ListNode*p=first; ListNode*q=p->next; wh

2022-04-15 12:43:57 548

原创 Leetcode之203. 移除链表元素

提交记录执行结果:解题思路:p指针用来遍历,s指针用来临时存放;语言:C++class Solution {public: ListNode* removeElements(ListNode* head, int val) { if(head==NULL) return NULL; ListNode*H = new ListNode(-1); H->next = head; ListNode*p = H;

2022-04-14 21:31:19 621

原创 Leetcode之560. 和为 K 的子数组

暴力求解(超时)解题思路:语言:C++class Solution {public: int subarraySum(vector<int>& nums, int k) { int len=nums.size(); int prefixsum=k; int length=0; for(int i=0;i<=len;i++){ length=0; fo

2022-04-12 22:07:41 508

原创 Leetcode之238. 除自身以外数组的乘积

提交记录v1.0解题思路:分析:本题题目不难,但是要求不用除法且时间复杂度为n。上图很助于理解本题思路,本题所求的实际为每一行之中,白块的元素相乘;第一个for循环是利用前缀和的思想,从上到下将白块的乘积乘入answer数据组;第二个for循环依然利用前缀和思想,从下到上将白块的乘积继续乘入answer数据组;该解法需要用到两次for循环,接下来尝试合并循环。语言:C++class Solution {public: vector<int> productExce

2022-04-12 17:53:25 764

原创 Leetcode之1732. 找到最高海拔

提交记录语言:C++class Solution {public: int largestAltitude(vector<int>& gain) { int hight=0; int leftsum=0; int len=gain.size(); for(int i=0;i<len;i++){ leftsum+=gain[i]; if (leftsum&

2022-04-12 12:31:40 239

原创 Leetcode之1588. 所有奇数长度子数组的和

暴力求解执行结果:解题思路:第一个for循环控制每次求和元素的个数;第二个for循环控制滑动窗口的起始区间,因此for循环执行到len-j;第三个for循环控制每个滑动窗口的起点与长度,因为滑动,所以从i开始,长度为j,因此循环到i+j结束;此方法为暴力求解,空间复杂度为n的三次方;语言:C++class Solution {public: int sumOddLengthSubarrays(vector<int>& arr) { int

2022-04-12 10:28:39 990

原创 Leetcode之1480. 一维数组的动态和

提交记录v1.0语言:C++class Solution {public: vector<int> runningSum(vector<int>& nums) { int len = nums.size(); vector<int> res(len); res[0] = nums[0]; for(int i=1;i<len;i++) re

2022-04-11 11:56:28 237

原创 Leetcode之1991. 找到数组的中间位置

提交记录class Solution {public: int findMiddleIndex(vector<int>& nums) { int sum=0; int leftsum=0; int len=nums.size(); for(int i=0; i<len;i++){ sum+=nums[i]; } for(int j=0;j<

2022-04-10 18:51:10 499

空空如也

空空如也

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

TA关注的人

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