自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 YouTube双塔模型——基于流数据的采样偏差修正

双塔模型通过采样负样本来优化损失函数,但是这种方式会受到采样偏差影响,影响模型性能,特别是在样本分布极度倾斜的情况下YouTube中的视频数据是流数据,新增的Item无法包含在固定的语料库,因此需要在batch中进行负采样并计算in-batch softmax从流数据中估计item的采样概率,并应用到采样偏差的修正上是改善模型性能的关键。

2024-03-31 22:37:37 627

原创 leetcode刷题笔记——股票交易问题总结

由于卖出股票后有一天的冷却时间,所以在卖出股票后先转移到sell状态,后一天才可以重新回到s0状态。由于不限制交易次数并且买入和卖出可以是同一天,因此只要第i天的股价高于前一天,我们就选择交易。在进入buy状态后可以直接卖掉股票转移到sell状态也可以选择转移到imm状态重复等待。s0表示待买入阶段,买入第i天的股票后转移到buy状态,也可以选择不购买重复等待。股票购买问题本质上就是一个有限状态机,对于这类问题,画出状态转换图即可解之。如果存在其他状态指向该状态,那么就用其他状态的前一天状态进行更新。

2024-03-28 18:49:17 947

原创 基于重要性采样的期望估计——sampled softmax推导

sampled softmax公式推导

2023-01-29 16:02:13 430 1

原创 英文文本单词词频统计——基于HashTable

使用哈希表统计英文文本词频

2022-07-28 16:51:03 837

原创 枚举排列和子集生成的方法

1. 增量构造法增量构造法在每一层递归中都会输出一个子集,集合的子集总共有2^n个(包括空集),所以解答树的结点为 2^n个值得一提的在for循环中的起始需要保证比前一个子集的最后一个元素大,从而不会出现{1, 2}和{2, 1}这样重复的子集出现,每个自己的元素都是递增的。public void printSubset(int n, int A[], int k) { // 因为是子集 所以不需要k=n的时候再输出 for(int i = 0 ; i < k; i ++) { S

2022-03-03 20:17:47 181

原创 排列枚举问题

以全排列问题为例,如何枚举出所有排列组合?容易想到的思路就是dfs深度优先搜索,比如我要得到长度为m的全排列,那么对于每一层递归,选择未被选择过的数然后再往下继续搜索,直到选择了m个数,此时一种排列组合形成了,想要获得所有的排列组合,就需要进行回溯,将之前标记为已选择的数重新标记为未选择,这样就能得到其他的组合。for (int i = 1; i <= n; i++){ if(!visited[i - 1]){ a[m] = i; //m为此时递归的层数 visited[i

2021-03-10 20:43:30 229

原创 从零配置Anaconda编程环境

1.安装Anaconda首先根据自己的电脑下载对应的anaconda安装包,然后开始安装,一路点下去选择为当前用户安装还是为所有使用本系统的所有用户安装,随便选一个,区别是环境变量在用户变量/系统变量里编辑这里勾选第一个选项会直接把anaconda加到环境变量中,然后点install安装2.Anaconda的基本使用1.配置镜像如图是anaconda的命令行窗口,和windows的cmd类似,可以看到现在正处于base环境中,这是默认的环境,我们也可以创建自己的虚拟环境下面给出cond

2021-02-03 15:32:43 2435 1

原创 pandas删除数据、空缺值处理、重复值处理

1.删除指定的行或列t1 = pd.DataFrame(np.arange(12).reshape((3,4)).astype("int"), index = list("abc"), columns = list("ABCD"))#若不指定轴则 默认删除行t1.drop('a', inplace = False)#指定axis=1 则删除列t1.drop('A', axis = 1, inplace = False)t1.drop(['A', 'B'], axis = 1, inplace

2021-01-23 09:38:22 788 3

原创 交换两个int类型指针的问题

在刚刚接触c语言的时候我们一定学过一个swap函数来交换两个数void swap(int a, int b){ int temp = a; a = b; b = temp;}显然上面的函数是错的,因为传进去的a是形参,在函数内部a,b进行交换并不会影响函数外a和b的值,为了解决这个问题,我们改为传入a和b的地址进去,通过解引用将a和b的值交换,这样就可以真正意义上实现a和b的交换,当然使用引用也可以解决。void swap(int *a, int *b){ int *temp =

2020-12-31 22:36:07 509

原创 KMP算法

实现代码:#include <iostream>#include <cstring>using namespace std;//获取next数组 递推法// void get_next(char* t, int next[]) {// int k, j;// next[0] = -1;// for (j = 1; t[j]; j++) {// k = next[j - 1]; //t[0...k-1] = t[j-k-1...j-2]// whi

2020-12-04 21:22:25 92

原创 中缀表达式求值

代码如下:#include <iostream>#include <stack>using namespace std;int get_isp(char ch){ if (ch == '(') return 1; else if (ch == '+' || ch == '-') return 2; else if (ch == '*' || ch == '/') return 3; else if(ch == ')') return 4; else r

2020-11-28 21:21:33 195

原创 八皇后问题的非递归解法

八皇后问题是一个古老而著名的问题。该问题要求在88格的国际象棋盘上摆放着8个皇后,使其不能互相攻击(如下图所示)。即任意两个皇后都不处于同一行、同一列或同一斜线上。求总共有多少种摆法。如图所示:递归算法已经给出,现在的问题是如何利用堆栈实现八皇后问题的求解。思路:建立一个数值栈用于存储已摆放好的棋子所在的行号以及当前的摆放进度。typedef struct SqStack { int row[MAX_SIZE + 1]; //为了方便起见数组下标从1开始 记录棋子的行号 int

2020-10-31 15:50:22 2799

原创 半三角矩阵的压缩存取及矩阵乘法的实现

在数组的压缩存储中我们学过了对称矩阵的存储方式,半三角矩阵的存储方式是类似的。对于n阶方阵,总共需要存储1+2+3…+n = n(n+1)/2 个元素。设i>=j,则第i行之前的行号为0~i-1,总共i行,其对应行所包含的元素个数分别为1,2,3…i,总和为(i+1)*i/2,并且aij位于第j列,在第i行中左侧还有j个元素,综上所述offest(i,j) = (i+1)*i/2 + j 。...

2020-10-29 20:31:04 779

原创 stack容器的基本使用

构造函数:stack<T> stk; //stack采用模板类实现, stack对象的默认构造形式stack(const stack &stk); //拷贝构造函数赋值操作:stack& operator=(const stack &stk); //重载等号操作符方法:push(elem) //入栈pop() //出栈top(

2020-10-23 14:02:18 178

原创 selenium中常用的Action动作链

selenium中常用的Action动作链在进行网页的爬取时,经常会使用到selenium中的Action来模拟真人的点击拖动等, 下面列出常用的动作链及使用方法,防止忘记。click(on_element=None) ——单击鼠标左键click_and_hold(on_element=None) ——点击鼠标左键,不松开context_click(on_element=None) ——点击鼠标右键double_click(on_element=None) ——双击鼠标左键drag_and_dr

2020-10-18 20:37:52 1838

原创 全排列的非递归算法

利用堆栈消除递归练习二从1~n这n个整数中取m个整数的全排列的递归算法很容易写出来,下面研究如何用堆栈消除递归。首先我们分析一下递归算法的思路://全排列递归算法void perm(int flag[], int a[], int k, int n, int m) /*递归算法*/ { int i; if(k==m) { for(i=0;i<m;i++) printf("%d ", a[i]); printf("\n"); return; } for(i

2020-10-18 16:46:05 1736 1

原创 利用堆栈消递归练习

某递归定义的函数如下:f(0)=0f(1)=1f(2n)=f(n)f(2n+1)=f(n)+f(2n-1)其中,n为非负整数。以上对应的C语言递归函数的实现如下:int f(int m) /* m为非负整数 */{ if(m==0) return 0; if(m==1) return 1; if(m%2==0) return f(m/2); return f(m/2)+f(m-2);}下面探究如何利用堆栈消除递归,以n=3为例:typedef struct

2020-10-18 11:16:49 864 4

原创 利用堆栈消除斐波那契数列递归

源代码:#include <iostream>using namespace std;#define MAX_SIZE 20typedef struct {int n, r1, r2;}ElemTp; // r1 = f(n-1) r2 = f(n-2)int fabonacci(int n){ ElemTp *s = new ElemTp[MAX_SIZE]; int top = -1; //栈顶指针 ElemTp a = {n, -1, - 1}; /

2020-10-18 00:13:46 292

原创 基于循环队列的排队买票模拟程序

编程建立循环队列存储结构,对排队买票过程进行模拟。要求程序在控制台屏幕上显示字符菜单:排队——输入新到达的买票人姓名,加入买票队列中;售票——排队队列中最前面的人购票成功,显示信息并将其从队列中删除;查看队列——从队首到队尾依次列出所有正在排队买票人的姓名;结束——退出系统。“排队”时,若队满,应提示等待(排队不成功);“售票”时,若队空,应提示无人排队(售票失败)。实现代码:#include <iostream>#include <cstring>using

2020-10-15 15:31:38 1585 1

原创 单链表实现多项式乘法

多项式乘法比较复杂,先实现多项式的加法,可以大大化简程序,输入输出采用文件的形式。代码如下:#include <iostream>#include <fstream>using namespace std;typedef struct PNode{ double c; int e; struct PNode *next;}PNode, *PolyList;//创建一个空结点void CreateNode(PolyList &p){ p = ne

2020-10-09 20:24:14 1096

原创 Python模板的使用

示例[email = ‘[email protected]’][name = ‘lqz72’]The email of [name] is [email]template.txt执行代码后name 和 email被代入,打印出了完整的字符串实现代码:import fileinput, refield_pat = re.compile(r'\[(.+?)\]')#存放变量的值scope = {}def replacement(match): code = match.group

2020-10-06 14:17:42 198

原创 迭代法计算一元多项式

代码如下:#include <stdio.h>#include <stdlib.h>double polynomial(int a[], int i, double x, int n){ if (i > 0) return a[n - i] + x * polynomial(a, i - 1, x, n); else return a[n];}int main(){ int a[99] = { 0 }; int i, n; double x; pri

2020-09-25 17:32:13 262

原创 线性表的简单实现

实现代码:#include <stdio.h>#include <stdlib.h>#define MAXSIZE 20typedef struct Sqlist{ int data[MAXSIZE]; int length;}Sqlist;//获取线性表第i个位置的元素 void GetElem(Sqlist L, int i, int *e){ //首先判断位置是否合法以及是否为空表 if (i < 1 || i > MAXSIZE ||

2020-09-20 10:12:59 244

原创 循环链表的应用——约瑟夫问题

循环表解决约瑟夫问题约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3。由于需要不断循环计数来确定被杀的人,所以使用循环链表可以很好地解决这个问题。循环链表本质上就是将单链表中的尾结点指向头结点,形成一个环,所以创建的方式和单链表很相似。void initList(Linklist *L, int n) //尾插法整表创建{ Linklist p, r; //声明工作指针 (*

2020-09-17 16:09:26 602 1

原创 单链表及其实现

单链表和快慢指针链表是一种重要的数据结构,为了防止忘记单链表,写一篇博客用来复习。单链表采用结构指针来实现,首先定义一个结构体,里面存放数据和指向下一个结点的指针。typedef struct LNode{ int data; struct LNode* next;} LNode;typedef struct LNode *LinkList;实现代码#include <stdio.h>#include <stdlib.h>#include <time

2020-09-16 22:05:28 346

空空如也

空空如也

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

TA关注的人

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