- 博客(51)
- 收藏
- 关注
原创 字节9.3秋招研发笔试 【后端方向】第三题
小红拿到了一个无向图,初始每人节点是白色,其中有若干个节点被染成了红色。小红想知道,若将 i 号节点染成红色,当前的红色连块的数量是多少?你需要回答i∈[1,n] 的答案。定义,若干节点组成一个红色连通块,当且仅当它们都是红色节点,且在该图上可以通过无向边互相到达,这些可以连通的节点构成的最大集合为一个连通块。
2023-09-04 16:30:37 1522
原创 python 正则化规则
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。编译正则表达式,生成一个正则表达式( Pattern )对象。match 和 search 是匹配一次,
2023-07-04 16:21:09 252
原创 windows中,png图片转eps
此处第一个Figure1代表需要转化的图片名称,第二个Figure1代表转化后保存的图片名称。至于.png还是.jpg就取决于要转化的图片格式了。
2023-03-18 16:57:50 664
原创 c++ STL 函数汇总
vector篇功能:可变长度的数组vector空间处理resize reserve:resize(n):对vector长度进行裁剪或补足,n大于当前长度时,会用初始值补充到n长度;reserve(n):为vector预留出n个元素的空间,还不可访问。queue队列篇功能:后进前出常用成员函数:deque 双端队列篇功能:队列头尾都可以进出元素常用成员函数:deque deq;deq[ ]:用来访问双向队列中单个的元素。deq.front():返回第一个元素的引用。deq.b
2022-04-08 11:14:10 907
原创 python2到python3代码错误汇总
1. 算术运算报错 can’t multiply sequence by non-int of type ‘float’原因:用了float数据进行数乘,需要用iny型数据根本原因:python2中 A/B 返回int型数据,而python3中 A/B 返回float型数据解决方案:把 A/B 改为 A//B 即可2. IndexError: invalid index of a 0-dim tensor. Use tensor.item() in Python or tensor.item<
2022-02-17 17:01:21 1260
原创 linux 解压zip文件及各种问题解决
解压压缩包命令:unzip 文件名.zip若报错:unzip command not found 原因:linux中未安装unzip命令。解决:执行如下命令,下载unzip包apt install unzip可能再次报错:E:Unable to locate package unzip解决:先执行命令apt-get update,该命令结束后,再执行apt install unzip...
2022-02-17 09:39:50 3102
原创 linux终端常用命令【update...】
1.后台挂起nohup Command [ Arg … ] [ & ]# 例: # 将test.py程序后台挂起运行,并将输出重定向到文件 test.log 中nohup python test.py > test.log 2>&1 &2. 进程命令1. 查看进程抓取进程:ps,参数示例:ps a 显示现行终端机下的所有程序,包括其他用户的程序。ps -A 显示所有程序。ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的
2021-12-15 16:42:00 2864
原创 服务器从0搭建-【anaconda3+cuda+cudnn+conda环境创建+修改conda源】
1. anaconda3下载安装下载地址清华源镜像:清华源镜像北交源:北交源镜像官网:百度上传.sh文件至服务器安装anaconda:bash Anaconda3-2020.11-Linux-x86_64.sh安装过程中,有提示初始化conda路径,选择yes,会自动初始化conda路径在/root/.bashrc文件中激活更新后的/.bashrc文件:source ~/.bashrc验证conda安装成功:conda list,输出conda自带包;conda env list
2021-12-14 22:35:29 3042 1
原创 sklearn.model_selection.train_test_split
sklearn.model_selection.train_test_split函数功能:对数据和标签,按照指定比例,随机分出训练集和测试集示例:返回值:样本训练集,样本测试集,标签训练集,标签测试集# x_data: 所有样本数据# y_data: 所有label数据x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size=0.25, random_state=1)# test_size:值
2021-08-31 13:34:07 896
原创 python数据处理包——pandas
目录pandas.DataFrame新建dataframedaraframe常用域pandas读取保存文件保存文件读取文件pandas.concatpandas.mergepandas将dataframe的多列合并为一列pandas是python中强大的数据处理包,能够进行各式各样的数据处理工作。pandas.DataFramepandas对数据的封装格式。新建dataframe示例:import pandas as pda=[['1','2','3'], ['a','b','c']]#
2021-08-25 15:56:37 1568 3
原创 P NP NP-Complete NP-Hard问题的定义和区别
目录基础知识P(polynomial)问题NP(non-deterministic polynomial)问题NP-Complete问题NP-hard问题各问题难易程度基础知识多项式时间复杂度可解:如果一个问题可以在O(nk)O(n^k)O(nk)时间复杂度内得到解决,称该问题在多项式时间复杂度内可解,其中,n是实例的长度,k是固定常数。规约:对于两个问题L1和L2L_1和L_2L1和L2,若存在多项式时间复杂度的函数fff,将L1中的实例对应到L2中,则称L2L_2L2可规约到L1L_1L1
2021-08-22 11:58:08 492
转载 无监督学习自编码器——在网络预训练中的应用
基本思路:对于神经网络的每个隐藏层,逐层组成三层自编码器进行无监督训练,训练得到的网络参数当作网络的初始化参数。这种方式可以学习到训练数据的结构等信息,在网络正式训练(也称微调)时可以快速收敛。参考链接:栈式自编码器的无监督逐层贪婪预训练...
2021-08-19 11:24:50 824
原创 pytorch学习笔记——手动实现loss函数
这里写目录标题1. 手动实现BCELoss损失函数2.手动实现CrossEntropyLoss损失函数1. 手动实现BCELoss损失函数BCELoss损失函数,又称 “二元交叉熵损失函数(binary cross entropy loss)”计算公式:loss(x,class)=−logp(xclass).(class为x的真实类别标签)loss(x,class) = -{log {p(x_{class})}}. (class为x的真实类别标签)loss(x,class)=−logp(xcla
2021-08-15 15:41:26 3498
原创 pytorch学习笔记——torchvision.transforms使用
torchvision.transforms使用transforms.ToTensor()transforms.Noumalize(mean, std)transforms.Resize(size)transforms.Compose(transforms)transforms.ToTensor()函数功能:1. 把shape = (H x W x C) 数据转化为shape = (C x H x W) 形式;2. 把像素范围为 [0,255] 数据转化为 [0.0,1.0] 范围数据;3. 把类
2021-08-12 11:41:33 490 1
原创 pytorch学习笔记-各种Dataset的使用
TensorDataset 可以用来对 tensor 进行打包,就好像 python 中的 zip 功能。通常用于打包数据 和 标签。该类通过每一个 tensor 的第一个维度进行索引。因此,该类中的 tensor 第一维度必须相等。TensorDataset 打包之后,可再送入dataloader中,最后得到迭代的batch_size对象。参考:PyTorch 小功能之 TensorDataset...
2021-07-15 11:48:47 3330
转载 机器学习笔记-多层感知机(MLP)
原理简介多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network),除了输入输出层,它中间可以有多个隐藏层。最简单的MLP只含一个隐层,即三层的结构,如图:参考:多层感知机(MLP)简介...
2021-04-19 16:19:33 1807
转载 pytorch学习笔记-torch.nn与torch.nn.functional的区别及应用场景
转载出处:作者:有糖吃可好链接:https://www.zhihu.com/question/66782101/answer/579393790来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。两者的相同之处:nn.Xxx和nn.functional.xxx的实际功能是相同的,即nn.Conv2d和nn.functional.conv2d 都是进行卷积,nn.Dropout 和nn.functional.dropout都是进行dropout;运行效率也是近乎相同。
2021-04-14 16:55:24 678
原创 scipy.stats统计库函数
常见通用函数pdf:概率密度函数cdf:累积分布函数,已知x位置求累计概率ppf:分位点函数,已知累计概率求x位置(cdf的逆函数)norm:正态分布poisson:泊松分布uniform:均匀分布t:T分布求平均值的标准误差(SEM)import scipy as spimport scipy.statsimport numpy as nparr=[1,2,3,4,5]sem=scipy.stats.sem(arr)SEM详解见:SEM实例:求置信区间临界点先验知
2021-04-13 20:14:41 2542
原创 平均值的标准误差(SEM)
定义数学公式定义:σ\sigmaσ:样本标准差nnn:样本数量σ′=σn\sigma'=\frac{\sigma}{\sqrt{n}}σ′=nσpython公式定义:# 样本的(无偏估计)标准差/sqrt(样本数量)sem = np.std(arr,ddof=1) / np.sqrt(len(arr))区别标准误差(SD)与平均值标准误差(SEM)之间主要区别在于:SD量化了分散值之间的差值有多大;SEM量化了你对总体实际平均值的了解程度。其考虑了SD的值和样本量;
2021-04-13 17:27:39 16462
原创 pytorch学习笔记-网络训练中,model.train() model.eval()的使用
网络训练中,model.train() model.eval()的使用1. model.train()启用 Batch Normalization 和 Dropout。如果模型中有BN层(Batch Normalization)和Dropout,需要在训练时添加model.train()。model.train()作用:对BN层,保证BN层能够用到每一批数据的均值和方差,并进行计算更新;对于Dropout,model.train()是随机取一部分网络连接来训练更新参数。2. model.eval(
2021-04-04 17:31:56 5059 2
原创 pytorch学习笔记-loss函数
1. 交叉熵(torch.nn.CrossEntropyLoss)参数class CrossEntropyLoss(_WeightedLoss): def __init__(self, weight=None, size_average=True, ignore_index=-100, reduce=True): pass def forward(self, input, target): pass两个参数:input:形状:NxC,其中C为类别数量;target:形
2021-03-26 21:17:36 595 1
原创 pytorch 搭建网络步骤
pytorch 搭建网络步骤准备数据定义网络结构model定义损失函数定义优化算法 optimizer(有是还要定义更新学习率:scheduler=StepLR() )训练 5.1 准备好tensor形式的输入数据和标签(可选) 5.2 前向传播计算网络输出output 和 计算损失函数loss 5.3 反向传播更新参数 以下三句话一句也不能少: 5.3.1 optimizer.zero_grad() 将上次迭代计算的梯度值清0 5.3.2 loss.ba
2021-03-16 16:12:32 1443 2
原创 python 学习笔记
python 学习笔记(update中)1. argparse使用方式import argparse# 设置说明parser = argparse.ArgumentParser(description='Train networks')# 添加参数parser.add_argument('--train.epochs', type=int, default=100, metavar='NEPOCHS', help='number of epochs to train (default: 100
2021-03-09 13:32:22 323
原创 2020年计算机保研历程记录分享【夏令营+预推免】
写在前面今年的保研历程真的是坎坷,从三月左右开始准备,一直到10月10号决定学校,七个月左右的漫漫历程,感觉需要记录一下,也是给后来人一个参考。个人情况本科院校:中部某中流211计科专业;专业排名:前五学期13/150(8.3%),前六学期11/150;(夏令营用的前五学期成绩,超8%很伤,容易被刷呜呜呜)项目经历:软件综合实习(优秀作品),微信小程序后端开发;(很水的科研项目经历千万不要写,老师很喜欢问科研经历,我有过一个很水的科研,没敢写上去,剩下的这两个都是偏开发的项目,老师们问的也较少
2020-10-17 15:45:00 5718 12
原创 ECNU 1009 整数的拆分【动态规划,整数分拆】
题目EOJ 1009思路动态规划,整数分拆具体整数分拆思路见百度百科:整数分拆c++代码#include <iostream>#include<algorithm>using namespace std;int dp[102][102];int main() { int n; for (int i = 1; i < 102; ++i) dp[1][i] = dp[i][1] = 1; //base case //i:需要分拆的数字 //j:分拆
2020-09-20 16:39:07 225
原创 leetcode 1131. 绝对值表达式的最大值【曼哈顿距离】
题目思路把[i,arr1[i],arr2[i] ]看做三维空间中的一个点,则所求表达式最大值,即空间中某两点间的曼哈顿距离最大值。曼哈顿距离解释如图(图源百度百科):即求解:三维空间中,曼哈顿距离最大的两点间的曼哈顿距离值。正常思路:求每两对点之间的曼哈顿距离,时间复杂度为O(n^2);简化思路:求两点间的曼哈顿距离,可以转化为:求两对点到三维空间角落的曼哈顿距离之差,时间复杂度O(n)。而三维空间存在八个角,即求每个点到八个角落的曼哈顿距离,维护每个角落的距离最大值和最小值;最后,返回
2020-09-17 22:00:23 851
原创 c++ memset用法总结(更新ing)
一维数组赋值:bool array[9]={false};二维及以上数组赋值:bool array[9][9];memset(array,false,sizeof(array));ps:memset只能对连续内存进行赋值;直接声明如 a[9][9] 形式的二维数组内存是连续的,可以直接用memset赋值;动态分配的二维数组只在行上连续,不能直接用memset,需要分每行进行memset!......
2020-09-15 14:57:00 641
原创 c++ 动态分配数组
动态分配一维数组int n=5;int *array=new int[n];//!!!!!!1//删除数组指针delete[]array;//不要忘了括号,否则只会删除第一个单元动态分配二维数组//!!!动态分配二维数组!!!int n=10;int **memo = new int*[n];//!!!!for (int i = 0; i < n; ++i) memo[i] = new int[n];//!!!!//delete二维数组for (int i = 0; i &
2020-08-30 16:04:02 1494
原创 leetcode 面试题 17.13. 恢复空格【字典树】
题目思路动态规划+字典树本题的主要思路其实是动态规划:数组dp[i]的状态表示:前i个字符中,未识别的字符个数。状态转移方程:若存在j(j<=i),使得字符串sentence[j-1…i-1](下标从0开始)存在于dictionary中,则dp[i]=min(dp[i],dp[j-1]);否则,dp[i]=dp[i-1]+1;此时,问题转化为,在dictionary中匹配字符串的问题,若一个一个暴力匹配,时间消耗太大,本题采用字典树来匹配。字典树的优点:若某个前缀不是所有字
2020-08-30 11:55:42 173
原创 leetcode 721. 账户合并【并查集】
题目基础知识准备-并查集查找并返回所在集合的根节点:find():注意:根节点特性是:father[i]==i; 每次查找时进行路径压缩,保证集合树的高度不大于2; int find(int i) { //寻找根节点 int f = i; while (father[f] != f) //当该结点不是根节点时 f = father[f]; //上诉到父结点 //路径压缩 while (i != f) { int tmp = father[i]; father
2020-08-28 21:57:15 230
原创 数据结构-排序小结【sort和priority_queue】
sort函数排序sort(it.begin().it.end(),cmp);三个参数:begin,end,排序方式排序区间:前闭后开;排序方式:默认从小到大:sort(it.begin().it.end(),less<type>());从大到小应改为:sort(it.begin().it.end(),greater<type>());缺点:不能对结构体和自定义数据结构排序,需要另写排序函数。自定义排序函数:sort(it.begin().it.end(),c
2020-08-27 13:52:02 242
原创 leetcode 332. 重新安排行程【有向欧拉图,Hierholzer 算法】
题目题目分析我们首先把问题简化:每张机票是有向图中的一个边,要求经过该图每条边一次且仅一次的走法,即求该图的欧拉回路(或欧拉迹),也可以理解为----一笔画。题目中明确了,该图肯定存在欧拉回路(或欧拉迹)。对与这种:给出一个有向图,且为欧拉图,求欧拉回路的问题,我们应用Hierholzer 算法。 该算法的大概流程如下:选择任一顶点为起点,遍历所有相邻边。深度搜索,访问相邻顶点。将经过的边都删除。如果当前顶点没有相邻边,则将顶点入栈。栈中的顶点倒序输出,就是从起点出发的欧拉回路。
2020-08-27 13:33:43 320
原创 leetcode 861. 翻转矩阵后的得分【贪心】
题目思路贪心算法思路(注意题目中说,可以进行若干次行或列翻转):1.行翻转时,可以知道,每行的最高位为1时,翻转会让该行二进制值变小,不用翻转;否则进行翻转;2.列翻转时,只需保证,该列1的数量>0的数量,即可,若不满足,则翻转该列;3. 在列翻转时,可以连带计算该列数值的二进制和。C++代码class Solution {public: int matrixScore(vector<vector<int>>& A) { //贪心思路: //
2020-08-26 16:33:35 174
转载 各种字符串匹配算法【BF、BM、RK、KMP】
BF算法基础的暴力比对算法,时间复杂度O(n)。BM算法BM字符串匹配算法KMP算法KMP算法!!!
2020-08-24 15:49:43 366
原创 leetcode 62. 不同路径 (动态规划)
题目思路典型的动态规划问题把m*n的地图看成m*n的二维数组dp,dp[i][j]的值是到该位置共有多少走法。简单列出几个位置的走法后可以发现:dp[i][j]=dp[i-1][j]+dp[i][j-1];这是因为:当到达位置(i-1,j)后,从(i-1,j)到(i,j)只有一种走法;同理,到达位置(i,j-1)后,从(i,j-1)到(i,j)只有一种走法。最终得到上述递推公式:dp[i][j]=dp[i-1][j]+dp[i][j-1];初始状态:dp[1][1]=1…dp[1][n]=1
2020-08-10 18:32:47 282
原创 leetcode 15. 三数之和【数组排序+双指针】
题目思路难点在于不允许出现重复的三元组,所以不能单纯使用三重循环求解。在三重循环的基础上考虑,我们可以在三元组中指定某种顺序,例如:保证{a,b,c} 满足a<=b<=c。只访问并保存该顺序的三元组,即可规避重复问题,这时需要对原数组进行排序。解决排序问题后,还要注意可能出现重复元素,也会导致三元组重复,所以移动指针时需要跳过重复元素。在原来三重循环+排序的基础上可以发现,如果向右移动b,b的值会变大,此时c只能减小才可能满足条件,所以c只能在原来的左侧寻找,因此可以把二
2020-08-03 18:01:33 145
原创 leetcode 338. 比特位计数
题目难度:中等思路动态规划时间复杂度:O(n)先列出一些数字,观察它们的二进制特点,当数字i:i为奇数时,1的个数是dp[i-1]+1;i为偶数时,如果i为2的幂次,dp[i]=1;否则,dp[i]是前面某两个偶数的dp之和。为解决i为偶数时的判断,此处设置两个指针low,high,刚开始都指向2。如果low==high,证明数字i是2的幂次,dp[i]=1,重置low=2,前移high=i;如果low!=high,dp[i]=dp[low]+dp[high],low+=2。C++代
2020-08-02 18:08:46 112
转载 leetcode 136. 只出现一次的数字
题目难度:简单(方法很巧妙)思路如果没有时间空间限制的话题目很简单,采用哈希表,第一次插入,第二次删除,最后哈希表中留下的数字便是答案。如果要满足空间复杂度O(1),可以通过异或⊕运算,异或运算满足:a⊕a=0;a⊕0=a;满足交换律、结合律:a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b。详情见官方题解 136题官方题解...
2020-07-30 16:49:00 157
原创 leetcode 138. 复制带随机指针的链表
题目难度:中等思路题目要求是复制原链表,需要另外新建链表,返回新建链表的头结点。但原链表结构较为复杂,从左往右遍历原链表时,不能在复制节点时,事先知道当前节点的next和random域,所以可以先复制节点并存储下来,在后续遍历过程中再补齐该节点的next和radom域。存储时利用哈希map<原链表节点,复制节点>,遍历原链表过程中,利用原链表节点去map中查看,前文遍历时是否复制过该节点:没有,则创建复制节点,存入map;有,则直接更新复制节点对应域。c++代码class So
2020-07-30 16:03:06 237
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人