- 博客(26)
- 收藏
- 关注
原创 霹雳吧啦学习笔记 用pytroch搭建 AlexNet
【3.2 使用pytorch搭建AlexNet并训练花分类数据集】https://www.bilibili.com/video/BV1W7411T7qc?定义AlexNet模型。
2023-10-11 20:17:52 211
原创 pytroch中 module.apply() / net.apply () 的用法
这个init_normal()函数其实就是一个初始化参数w,b的函数,,让net网络模型每一层的w,b参数都进行用样的初始化。
2023-10-09 16:11:48 601 1
原创 李沐softmax实现(pytroch)
其实就是将读入的数据用nn.Flatten()展平,然后在经过一个线性层nn.Linear()softmax不懂的可以参考沐神的官网。softmax可视化的loss图像。构建的Net训练模型的依据。
2023-10-08 20:20:10 185
原创 LeetCode105题:由中序和前序序列构造二叉树(C语言)
题目描述:思路:用递归的思想分别建立左右子树,先序遍历序列都是先遍历根节点,然后用一个for循环在中序遍历序列里面找到这个根节点然后在根节点左边的是左子树根节点右边的是右子树/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */...
2022-02-19 11:06:25 590
原创 leetcode104题:求二叉树最大深度(C语言)
题目描述:思路:递归法,分别求出左子树高度和右子树高度,然后返回更大高度的子树的值加1 ,思路很简单,大家将上面的样例代入代码就能理解/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */int maxDepth(struct Tre..
2022-02-18 16:35:23 810
原创 LeetCode101题:判断一棵二叉树是否为对称二叉树
题目描述:思路:首先考虑这题应该用递归的方法,拿到这题的时候无从下手,我们想要如何判断一颗二叉树是否左右对称,我们想到的是这个树根节点的左子树要对称于根节点的右子树,怎么样才能保证左右子树对称呢,也就是说如果整棵树只有左子树没有右子树那么这棵树肯定不对称,空树也是对称的,如果左右子树都存在的时候我们还要考虑的就是结点的对称位置的值是否相等即任意两个对称位置的根节点值要相等且左树的左子结点等于右树的右子节点。这句话大家可能看不明白但是大家看一下图就能理解啥意思了。/** * De..
2022-02-18 12:03:49 634
原创 判断是否为平衡二叉树(二叉搜索树)
题目描述:思路:用递归的方法遍历二叉树的每一个结点,由于二叉树的左子树结点小于根节点,右子树结点都大于根节点,所以我们在遍历每一个节点的时候都应该设置一个上界和下界,如果当前遍历结点的值不在这个范围内那就return FALSE,当然在这里很多人会想当然的认为每次让传入结点的值大于其左子树结点,小于其右子树结点,如果这样想那么你就忽略了一个东西,这样的递归不能保证根节点大于其所有左子树结点,比如(5,1,6,null,null,3,7)所以在设置递归条件的时候不能简单的说像下面这样,这里的错..
2022-02-16 14:14:34 523
原创 二叉树最大深度问题
题目描述思路:采用递归的方法分别求出左右子树的深度然后再返回深度更大的/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */int maxDepth(struct TreeNode* root){ if(root==NULL) {.
2022-02-15 20:53:15 239
原创 C语言实现单链表(不带头节点)的删除插入完整代码
注意:不带头节点的单链表删除插入操作第一个节点的时候都要特殊讨论以下代码是用C语言实现的完整代码可上机运行#include<stdio.h>#include<malloc.h>struct linknode{ int data; struct linknode* next;};void init(struct linknode** L){ (*L) = NULL;}void insect(struct linknode** L, int i, ..
2022-02-10 10:10:50 3139 2
原创 C语言实现顺序表的插入删除(完整代码)
纯C语言实现顺序表,完整代码#include<stdio.h>#define max 10typedef struct noed{ int data[max]; int length;}node;void init(node* L)//初始化函数{ L->length = 0;}void insert(node* L, int i, int data)//插入函数{ int k; if (i<1 || i>L->length + 1..
2022-02-09 15:10:00 5292
原创 C语言 回文链表(给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false )
思路:求出链表的长度,将链表前面一般的元素入栈,然后逐个出栈与后一半的元素进行比较,如果一旦不相等立马返回FALSE,停止比较,如果到最后栈不为空也要返回FALSE,只有当栈为空且出栈的元素和链表后一半的元素都想得才能返回TRUE;另外要注意的一点是长度为1的链表都是回文链表所以要进行特殊处理,即当length=1时直接返回TRUE不用进行后续的操作。/** * Definition for singly-linked list. * struct ListNode { * ...
2022-02-06 21:05:56 1621
原创 合并两个有序链表(将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 )
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){ if(list1==NULL) return list2; if(l...
2022-02-06 17:01:53 672
原创 反转单链表(C语言)
题目描述:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。思路:迭代的方法就是说设置三个指针p q L(p初始化指向null,q指向第一个结点1,L指向q的下一个结点,每一次循环都让三个指针分别往后移动一个位置)在遍历链表时,将当前节点的指针改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需要存储后一个节点。最后返回新的头引用。不多说直接上代码/** * Definition for singly-l
2022-02-06 14:58:10 533
原创 请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。题目数据保证需要删除的节点 不是末尾节点 。
示例1:输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:指定链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为4 -> 1 -> 9
2022-02-06 13:20:04 409
原创 C语言 创建单链表
废话不多说直接上代码注意传参 使用的是指针的指针,否则链表得不到初始化和创建。对用指针作为参数,且要改变实参指针指向,不懂的同学可以参考这篇博客的最下面部分#include<stdio.h>#include<malloc.h>typedef struct lnode{ int data; struct lnode *next;}lnode,*linklist;void initlist( lnode **L){ (*L)=(lnode *)mall
2022-02-06 11:44:54 2879 2
原创 折半查找非递归方法(c/c++)
//思路:让low high分别指向数组的首和尾,每一次让中间值mid和要查找的值key比较,每比较一次就会缩小一般的查找范围,前提数组是要有序的#include<stdio.h>int search(int a[], int key){ int low = 0, high = 8; int mid; while (low <= high) { mid =(low + high) / 2; if (key ==a[mid]) return mid; els.
2022-02-05 10:31:50 1372
原创 C语言 关于指针传递参数问题
一个问题是,我们想用一个函数来对函数外的变量v进行操作,比如,我想在函数里稍微改变一下这个变量v的值,我们应该怎么做呢?又或者一个常见的例子,我想利用swap()函数交换两个变量a,b的值,我们应该怎么做呢(好吧,博主是觉得这个问题十分经典)。如果你真的理解C语言中【函数】这个工具的本质,我想你稍微仔细的思考一下,可能就不会来查看博主的这篇文章,对函数来说,它所传递的任何参数仅仅是原来参数的一个拷贝,所以,对任何企图通过void swap(int a,int b)来交换a,b值或者想通过void alt
2022-02-03 21:30:50 650 2
原创 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。
思路:初始化数组num[9],以及指向数组的指针p,sum=max=0。用for循环遍历数组,sum为指针p指向元素之前所有元素的和,当sum<0时舍弃p之前的元素,意思就是让sum变为0,当sum>=0时让sum=sum+p当前指向的元素的值,每次循环的时候让max和sum比较如果sum>max就把sum的值赋给max。#include<stdio.h>int main(){ int sum=0;int max=0; int num[9]; int e; in
2022-02-02 19:05:22 2272 1
原创 设计算法,交换单链表任意两个结点的位置(不可以直接通过交换数据完成)
思路:把要交换的两个结点摘除,让摘除后的结点链接成链表,然后将摘除的两个结点插入链表
2022-01-26 16:30:39 2200 7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人