【JavaScript学习笔记】
创建对象
var person={ firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};
对象是易变的,定义var x=person,x与person指向同一对象,二者同时改变。
访问对象
person.age 或 person["age"]
关于出栈序列的解法总结及卡特兰数的学习(C语言)
出栈次序
一个栈(无穷大)的进栈序列为1,2,3,…,n,有多少个不同的出栈序列?
解法1——递归/记忆化搜索
考虑用一个二维数组f[i][j]模拟当前情况:i——进栈序列中还有i个待排的数,j——栈中有j个数,f[i][j]的值表示当前i,j情况下有几种输出方案。
首先如果f[i][j]有值,直接调用即可(记忆化搜索,节省时间);
如果i=0,即序列全部入栈,只有一种输出方法,所以返回1;
考虑一般情况,有两种输出方案,先进一个再出,即加上f[i-1][j+1],(栈不空时,j>0,如果栈空只有第一种输出方案可行)直接出,即加上f[i][j-1]。
代码如下
long long f[MAX][MAX];long long dfs(int i,int j){ if(f[i][j]) return f[i][j]; if (i == 0) return 1; if(j>0) f[i][j] += dfs(i, j - 1); f[i][j] += dfs(i - 1, j + 1); return f[i][j];}int main() ...
【Python学习笔记】
数字类型及操作
整数
==整数无限制==
进制
十进制 1010,99,-217
二进制 0b或0B开头
八进制0o或0O
十六进制0x或0X
浮点数
==浮点数间运算存在不确定尾数==(用二进制表示有误差)
使用 roundroundround 浮点数间运算比较
不确定尾数一般发
生在10−1610^{-16}10−16左右
round(x,d):round(x,d):round(x,d):对x进行四舍五入,d是小数截取位数
>>> round(0.1+0.2,1) == 0.3True
采用科学计数法表示浮点数
<a>e<b> 表示 a∗10ba*10^ba∗10b
数值运算操作符
操作符
结果
x/y
浮点数结果
x//y
整除
x op =y
即x=x op y
不同类型的数进行运算产生“最宽”的结果
一些函数形式的数值运算功能
函数及使用
描述
abs(x)abs(x)abs(x)
x的绝对值
divmod(x,y)di ...
【算法篇】排序——快速排序(c语言)
【算法篇】排序——快速排序(c语言)
核心思想
排序算法的思想非常简单,在待排序的数列中,首先要找一个数字作为基准数(这只是个专用名词)。为了方便,我们一般选择第 1 个数字作为基准数(其实可以随便选)。然后把这个待排序的数列中小于基准数的元素移动到它的左边,大于它的移到右边。这时,左右两个分区的元素就相对有序了;接着把两个分区的元素分别重复上述步骤,直到各个分区只有一个数时为止。
代码示例
void swap(int *a, int *b){ int tmp; tmp = *a; *a = *b; *b = tmp;}void quick_sort(int l, int r){ int mid = in[(l + r) / 2];//这里是选择中间值作为基准 int i = l, j = r; do { while (in[i] < mid) i++; //找到左边比基准值大的数的位置 while (in[j] > mid) ...
【算法篇】排序——八大排序(c语言)
简介
冒泡排序
1)比较相邻的元素。如果第一个比第二个大,就交换他们两个;
2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数;
3)针对所有的元素重复以上的步骤,除了最后一个;
4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
选择排序
1)首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置;
2)再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾;
3)重复第二步,直到所有元素均排序完毕。
直接插入排序
插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
算法步骤:
1)将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列;
2)从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置(相同则插入相等元素后边)。
希尔排序(递减增量排序算法)
核心思想:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对 ...
【数据结构篇】链表
【数据结构篇】链表
设计链表
在链表类中实现这些功能:
·get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。
·addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。
·addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。
·addAtIndex(index,val):在链表中的第 index 个节点之前添加值为 val 的节点。如果 index 等于链表的长度,则该节点将附加到链表的末尾。如果 index 大于链表长度,则不会插入节点。如果index小于0,则在头部插入节点。
·deleteAtIndex(index):如果索引 index 有效,则删除链表中的第 index 个节点。
代码示例如下
typedef struct MyLinkedList_t{ int val; struct MyLinkedList_t *next;} MyLinkedList;/** Initialize your data struct ...
【数据结构篇】树的遍历
树的遍历
前序遍历
首先访问根节点,然后遍历左子树,最后遍历右子树
递归写法
void preTravel(struct TreeNode*root){ if(root!=NULL) { printf("%d",root->val); travel(root->left); travel(root->right); }}
迭代写法 (迭代就是把递归过程中调用的栈显式表达出来)
void preTravel(struct TreeNode*root){ struct TreeNode *stk[100]; int stk_top = -1; while (stk_top > -1 || root != NULL) { while (root != NULL) { printf("%d",root->va ...
【BUAA 18级数据结构第二题】后缀表达式转中缀表达式&表达式计算
题面
【问题描述】
从控制台输入一合法的后缀表达式,其中的运算符只包括+、-、*、/,运算数都是大于等于 0 的整数(除数不为零),按要求输出计算结果,或输出计算结果和相对应的中缀表达式。输出中缀表达式时只包含最少数目的圆括号(即在生成的中缀表达式中若去掉一对括号,则其将不能够转换回输入的后缀表达式)。输出计算结果时,小数点后保留两位,例如:10/3 的结果为 3.33
假如输入的后缀表达式为:
100 25 + 27 25 - / 248 + 201 -
其相对应的中缀表达式为:
(100+25)/(27-25)+248-201
计算结果为 109.50。
【输入形式】
首先从控制台输入一个合法的后缀表达式(长度不超过 200 个字符),其中的运算符、运算数之间都以一个空格分隔。然后在下一行输入一个整数 1 或 2 表示计算要求(1 表示只输出计算结果;2 表示输出对应的中缀表达式和计算结果)。
【输出形式】
若输入的计算要求为 1,则只将计算结果输出到控制台,小数点后保留两位;若输入的计算要求为 2,则先将后缀表达式对应的中缀表达式输出到控制台(其中添加的小括号都为英文小括号,表 ...
搭建XuperChain链过程
参考文档
环境准备
虚拟机Ubuntu
配置git
sudo apt install git
配置golang
sudo apt install golang-go
检查go的环境是否配置完成可用命令
go version
若出现如此标识表示成功配置
编译XuperChain
使用git下载源码到本地
git clone https://github.com/xuperchain/xuperchain.git
编译
cd xuperchain (总之进入xuperchain这个目录)
直接make可能会连接失败 像这样被拒绝访问
所以先执行
go env -w GOPROXY=https://goproxy.cn
更改权限
su chmod 777 xuperchain路径
再
make
编译顺利进行
跑单测测试
make test
==上述命令均在xuperchain目录下进行==
构建单节点xchain
cd ./output (进入output文件)
直接执行脚本会报错
需要先执行
sudo dpkg-reconfigure dash
然后依次执行
...
Github+Hexo搭建属于自己的免费博客
用以记录我搭建博客的完整流程:
我选用了github+hexo框架,配以vscode作为编辑器一体化配置。基于github page生成的个人博客可以保证稳定性(不会莫名挂了),使用vscode本地编写md文件再直接使用hexo命令渲染推送到公网也比较方便。
Github账号准备
新建仓库命名为github账户名.github.io
github远程仓库与本机连接
Node准备
安装Hexo
创建网站
hexo new "My New Post"
至此你的博客已经可以被他人以https://xxxx.github.io的形式访问到了,个人博客的雏形已基本完成,接下来是进一步优化。
皮肤
设置评论系统
CDN加速