next主题,文章链接是当前域名下的一个项目,并不是直接链接,修改版权部分信息
1 修改前部分文件路径:G:hexo-blog\lizhi\themes\next\layout\_macro\post-copyright.swg
1234567891011121314<ul class="post-copyright"> <li class="post-copyright-author"> <strong>{{ __('post.copyright.author') + __('symbol.colon') }}</strong> {{ post.author | default(config.author) }} </li> <li class="post-copyright-link"> <strong>{{ __('post.copyri ...
TypeError: imagemin.jpegtran is not a function
1 错误1234567891011121314151617[22:39:01] Using gulpfile G:\codeFolder\hexo-blog\lizhi\gulpfile.js[22:39:01] Starting 'default'...[22:39:01] Starting 'minify-html'...[22:39:01] Starting 'minify-css'...[22:39:01] Starting 'minify-js'...[22:39:01] Starting 'minify-images'...[22:39:02] 'minify-images' errored after 86 ms[22:39:02] TypeError: imagemin.jpegtran is not a function at G:\codeFolder\hexo-blog\lizhi\gulpfile.js:60:22 at minif ...
算法,数据反转算法
1 要求给定一组数据,将其倒序输出,如:
input: [1,2,3,4,5]output: [5,4,3,2,1]
input: [‘h’,’e’,’l’,’l’,’o’]output: [‘o’,’l’,’l’,’e’,’h’]
2 题解使用双指针,遍历数组长度的一半次数,即可,不需要借助额外的临时数组。
3 代码3.1 python1 method one
12345678def reverse(array_like): i=0 j=len(array_like)-1 while(i<=j): array_like[i],array_like[j] = array_like[j],array_like[i] i += 1 j -=1 return array_like
2 method two
12for i in range(len(array_like)>>1): array_like[i],array_like[len(array_like)-1-i] = array_lik ...
matplotlib基本用法介绍
0 代码import的包123456from matplotlib import pyplot as pltfrom matplotlib.pyplot import savefigimport numpy as npimport pandas as pdfrom statsmodels.graphics.tsaplots import plot_acfimport matplotlib.gridspec as gs
1 散点图1.1 normal scatter123456789def scatter(): x = np.random.randint(1,20,10) y = np.random.randint(1,10,10) plt.scatter(x,y) plt.xlabel("x values") # 设置x轴的显示 plt.ylabel("y values") # 设置y轴的显示 plt.title("scatter test") #设置标题 savefig(" ...
一篇文看透二叉树,先序遍历、中序遍历、后序遍历、广度优先、深度优先,java实现
1 二叉树的定义
在计算机科学中,二叉树(英语:Binary tree)是每个节点最多只有两个分支(即不存在分支度大于2的节点)的树结构。通常分支被称作“左子树”或“右子树”。二叉树的分支具有左右次序,不能随意颠倒。
二叉树的第$i$层至多拥有$2^{i-1}$个节点;深度为$k$的二叉树至多总共有$2^k-1$个节点(定义根节点所在深度$k_0=0$),而总计拥有节点数符合的,称为“满二叉树”;深度为$k$有$n$个节点的二叉树,当且仅当其中的每一节点,都可以和同样深度的满二叉树,序号为1到$n$的节点一对一对应时,称为完全二叉树。对任何一棵非空的二叉树$T$,如果其叶片(终端节点)数为$n_0$,分支度为2的节点数为$n_2$,则$n_0=n_2+1$。
与普通树不同,普通树的节点个数至少为1,而二叉树的节点个数可以为0;普通树节点的最大分支度没有限制,而二叉树节点的最大分支度为2;普通树的节点无左、右次序之分,而二叉树的节点有左、右次序之分。
二叉树通常作为数据结构应用,典型用法是对节点定义一个标记函数,将一些值与每个节点相关系。这样标记的二叉树就可以实现二叉 ...
用两个队列实现栈,java代码实现
1 实现原理介绍队列和栈的功能在用两个栈实现队列,java代码实现这边文章中已经介绍过了,这里就不多说了,直接讲实现原理:
当需要插入元素时,总是将新元素插入到那个空的队列中,然后再将另一个有数据的队列中的数据,取出插入到存放新元素的队列中,即可完成栈的功能。注意,每次执行完一次操作,两个队列中,只有一个队列有数据,要么是A,要么是B。下面画图介绍具体过程:
插入元素1
此时有数据的是队列A。
插入元素2
此时有数据的是队列B。
插入元素3
此时有数据的队列A。
删除栈顶元素,pop操作
2 java代码实现12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970import java.util.LinkedList;import java.util.Queue;public class QueueToStack { public stat ...
用两个栈实现队列,java代码实现
1 队列的功能介绍队列的功能就是FIFO(先进先出)原则。不管是队列还是栈,他们的功能都是存储数据,底层实现可以数组也可以是链表,但是他们各自有他们的特点。既然队列也是存储数据的一种数据结构,那么他就有增删改查等功能。队列的添加元素是在队尾添加,删除元素是在队头删除。
下面介绍一下队列的增删改查操作:
push(int x):在队列尾部添加一个元素
pop():删除队列头部第一个元素
empty():判断是否为空队列
peek():获取队列头部元素
2 栈的功能介绍栈也是一种存储数据的数据结构,和队列不同的是,这是一种FILO(先进后出)的数据结构,插入和删除都在栈顶完成。
下面介绍一下的栈的增删改查操作:
push(int x):向栈中插入一个元素
pop():删除栈顶元素
top():获得栈顶元素,打印,不删除
empty():判断是否为空
3 栈实现队列的原理介绍3.1 方式1原理介绍方式1将栈A作为最终的栈,即栈A中的元素排序和队列中的排序一致,此种方式在push元素入队列时,需要同时操作两个栈,比较消耗时间和空间,但是其他的操作(比如pop,top等)就不会消耗太多的 ...
java从键盘输入,scanner细节
1 需求当我们需要使用java从键盘输入数据时,使用到Scanner进行输入字符串时,可能会遇到一些小bug,比如:
1234567public class Input { public static void main(String[] args) { int age = scanner.nextInt(); String name = scanner.nextLine(); String sex = scanner.nextLine(); }}
输出:
为什么会这样呢?
2 原因解释因为scanner.nextLine()会接收一行数据,而scanner.next()是接收有效字符(除空格和enter等之外的所有字符)之前的数据,所以当输入完age值后,按下enter键之后,这个enter被scanner.nextLine()给吸收了,也就被其当做一个值给接收了,所以就自动跳过了中间的name,所以会导致出现bug。
不过没关系,解决办法就是在需要真正接收的变量前加一个空的scan ...
底层数据结构链表,以及java代码实现
1 原理介绍链表和数组的区别在于,数组的插入和删除操作需要整个数组一起跟着动,这样的效率很低。举个例子:打麻将时,当有一个麻将子,其大小正好在已经排序好的麻将中间,如果需要插入进原来的麻将序列,那么需要将之前或者之后的麻将全部移动,这样很费时间,所以链表可以弥补这种不足。
1.1 增链表的插入操作包括两种:
直接在末尾追加
在中间的某个位置插入
如下图所示,两种方式需要单独考虑。
1.2 删链表的删除,也包括两种:
直接删除末尾的节点
删除中间的节点
方式1删除:
使用两个指针,一个指针指向当前的节点,一个指针指向当前节点的前驱节点,前驱节点的后驱直接指向点前节点的后驱,即可实现删除功能。
方式2删除:
只使用一个指针,将当前节点的后一个节点的数据赋值到当前节点,并将当前节点的后驱指向后一个节点的后一个节点。
1.3 改修改其实就是先查找是否有需要修改的这个数据,如果没有这个数据返回false,否则就修改数据。
1.4 查查找数据也是一个一个遍历,但是如果链表有重复数据的话,只会返回第一次查找的数据。
2 代码实现2.1 创建链表链表中的节点的定义:
1234567891 ...
腾讯笔试题目
笔试题1
小Q定义了一种数列称为翻转数列:给定整数n和m, 满足n能被2m整除。对于一串连续递增整数数列1, 2, 3, 4…, 每隔m个符号翻转一次, 最初符号为’-‘;。例如n = 8, m = 2, 数列就是: -1, -2, +3, +4, -5, -6, +7, +8.而n = 4, m = 1, 数列就是: -1, +2, -3, + 4.小Q现在希望你能帮他算算前n项和为多少。
输入描述:
输入包括两个整数n和m(2 <= n <= 109, 1 <= m), 并且满足n能被2m整除。
输出描述:
输出一个整数, 表示前n项和。
笔试题1-代码:12345678910111213141516171819202122import java.util.Scanner;public class Test_1 { public static void main(String[] args) { Scanner scanner = new Scann ...