常见算法思想

一、穷举

通过穷举所有的组合,得出结论,🌰:

/**
* 今有鸡兔同笼,上有三十五头,下有九十四足,问鸡兔各几何?
* 解法:通过题目可以知道,鸡和兔的总数量为0-35只,
* 我们可以假设鸡为0,兔子为35,用鸡的个数*2+兔子的个数*4就可以得到总的脚
的数量,如果等于94,那么便是答案,
* 如果不等,则鸡的数量+1,兔子数量-1,依次类推,穷举所有情况直到得到答案
*/
var enumeratingAlgorithm = (head, foot) => {
let j;
for (let i = 0; i <= head; i++) {
//i代表鸡的数量
//j代表兔子的数量
j = head - i;
if (i * 2 + j * 4 === foot) {
console.log("鸡的个数为[ %d ]只,兔子的个数为[ %d ]只。", i, j);
return;
}
}
};
enumeratingAlgorithm(35, 94);
// 鸡的个数为[ 23 ]只,兔子的个数为[ 12 ]只。

阅读全文

CSS 系列文章 —— 文本处理

一、font-size

chrom 默认有字体限制最小是 12px,也就是小于 12 px 的字号都相当于 12px,但是 font-size: 0 例外,还是会保持为 0,利用这个特性可以实现可访问性隐藏

阅读全文

NPM Package.json 字段列表(包括非官方字段)

得空看看一些源码,发现 Package.json 文档里有些字段是不常见的,自然也不知道配置的是什么,查官方文档, 发现有些找不到,看到一篇不错的英文文档,翻译一下,以后好查看。

阅读全文

Hexo 支持数学公式

一、版本

hexo: 3.0.0

theme: maupassant

二、快速开始

1、安装插件

(1) 升级 hexo 到 3.0+,因为 hexo-math 插件只支持高版本

阅读全文

时间复杂度 vs 空间复杂度

一、时间复杂度

1、是什么

一般情况下,算法中基本操作重复执行的次数是问题规模 n 的某个函数,用 T(n) 表示,若有某个辅助函数 f(n),使得当 n 趋近于无穷大时,T(n) / f(n) 的极限值为不等于零的常数,则称 f(n) 是 T(n) 的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度,时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否。

阅读全文

CSS 系列文章 —— 层叠

一、层叠上下文

1、特性

(1) 层叠上下文的层叠水平要比普通元素高

(2) 层叠上下文可以阻断元素的混合模式

阅读全文

CSS 系列文章 —— 流的破坏与保护

一、float

1、本质: 实现文字环绕效果

2、作用机制

阅读全文

CSS 系列文章——盒尺寸

盒尺寸分为以下四种:content box、padding box、border box 以及 margin box,也就是容器盒子中的内在盒子的尺寸。

一、替换元素

1、🎓是什么

阅读全文

CSS 系列文章——CSS 中的流与尺寸

一、流与宽度

1、一个水平流上只能单独显示一个元素,多个块级元素换行显示

2、外部尺寸与流体特性

阅读全文

CSS 系列文章 —— 内联元素与流

一、x-height

1、是什么: 指小写字母 x 的高度,术语描述就是基线和等分线(mean line)(也称作中线,midline)之间的距离

阅读全文