虾米俊

虾米俊的博客


  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

hexo排坑实录

发表于 2018-09-21 | 分类于 博客 | | 阅读次数:
字数统计: 169 字 | 阅读时长 ≈ 1 分钟

hexo是什么

hexo是基于Node.js的博客框架,支持 Markdown,可部署到 GitHub Pages。
由于是基于Node.js的,因此对前端程序员天然友好。
官网:https://hexo.io/zh-cn/
安装部署教程网上较多,在此不再赘述,仅记录安装部署过程中遇到的坑及解决办法。

阅读全文 »

排列组合的实现

发表于 2017-08-10 | 分类于 算法 | | 阅读次数:
字数统计: 396 字 | 阅读时长 ≈ 2 分钟

PHP实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
// 阶乘
function factorial($n){
return array_product(range(1,$n));
}

// 排列数
function A($n,$m){
return factorial($n)/factorial($n-$m);
}

// 组合数
function C($n,$m){
return A($n,$m)/factorial($m);
}

/**
* 排列
* @param array $a
* 要排列的数构成的数组
* @param int $m
* @return array
* 返回所有的排列情况
*/
function arrangement($a, $m) {
$r = array();

$n = count($a);
if ($m <= 0 || $m > $n) {
return $r;
}

for ($i=0; $i<$n; $i++) {
$b = $a;
$t = array_splice($b, $i, 1);
if ($m == 1) {
$r[] = $t;
} else {
$c = arrangement($b, $m-1);
foreach ($c as $v) {
$r[] = array_merge($t, $v);
}
}
}
return $r;
}

/**
* 组合
* @param array $a
* 要组合的数构成的数组
* @param int $m
* @return array
* 返回所有的组合情况
*/
function combination($a, $m) {
$r = array();

$n = count($a);
if ($m <= 0 || $m > $n) {
return $r;
}

for ($i=0; $i<$n; $i++) {
$t = array($a[$i]);
if ($m == 1) {
$r[] = $t;
} else {
$b = array_slice($a, $i+1);
$c = combination($b, $m-1);
foreach ($c as $v) {
$r[] = array_merge($t, $v);
}
}
}

return $r;
}

JavaScript实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/**
* 创建范围为low至high的连续数组
* range(1,10)等同于php中的range方法 => [1,2,3,4,5,6,7,8,9,10]
* @param low
* @param high
* @returns {Array}
*/
function range(low, high) {
let arr = [];
while (low <= high) {
arr.push(low++);
}
return arr;
}

/**
* 数组元素乘积
* 等同php中的array_product
* @param arr
* @returns {*}
*/
function array_product(arr) {
return arr.reduce((pre, cur) => {
return pre * cur;
}
);
}

/**
* 阶乘
* @param n
* @returns {*}
*/
function factorial(n) {
return array_product(range(1, n));
}

/**
* 排列数
* @param n
* @param m
* @returns {number}
*/
function A(n, m) {
return factorial(n) / factorial(n - m);
}


/**
* 组合数
* @param n
* @param m
* @returns {number}
*/
function C(n, m) {
return A(n, m) / factorial(m);
}

左旋转字符串

发表于 2017-08-08 | 分类于 算法 | | 阅读次数:
字数统计: 200 字 | 阅读时长 ≈ 1 分钟

汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!

阅读全文 »

构建乘积数组

发表于 2017-08-08 | 分类于 算法 | | 阅读次数:
字数统计: 121 字 | 阅读时长 ≈ 1 分钟

给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…A[i-1]\A[i+1]…A[n-1]。不能使用除法。

阅读全文 »

滑动窗口的最大值

发表于 2017-08-08 | 分类于 算法 | | 阅读次数:
字数统计: 275 字 | 阅读时长 ≈ 1 分钟

给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,6,[2,5,1]}。

阅读全文 »

和为S的两个数字

发表于 2017-07-12 | 分类于 算法 | | 阅读次数:
字数统计: 193 字 | 阅读时长 ≈ 1 分钟

输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

输出描述:
对应每个测试案例,输出两个数,小的先输出。

阅读全文 »

和为S的连续正数序列

发表于 2017-07-11 | 分类于 算法 | | 阅读次数:
字数统计: 220 字 | 阅读时长 ≈ 1 分钟

小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!

输出描述:
输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序

阅读全文 »

用两个栈实现队列

发表于 2017-07-11 | 分类于 算法 | | 阅读次数:
字数统计: 79 字 | 阅读时长 ≈ 1 分钟

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

阅读全文 »

非递归实现斐波那契数列

发表于 2017-07-11 | 分类于 算法 | | 阅读次数:
字数统计: 81 字 | 阅读时长 ≈ 1 分钟

现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39。有时间内存限制

阅读全文 »

把数组排成最小的数

发表于 2017-07-10 | 分类于 算法 | | 阅读次数:
字数统计: 207 字 | 阅读时长 ≈ 1 分钟

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

阅读全文 »
1…6789
虾米俊

虾米俊

雨会下雨会停,这是不变的道理

82 日志
15 分类
11 标签
GitHub
© 2018 — 2019 虾米俊 | Site words total count: 47.8k