柯森(Cosen)
柯森(Cosen)
#### file-loader * 把文件输出到一个文件夹中,在代码中通过相对 URL 去引用输出的文件 ```js rules: [{ test: /\.(jpg|png|gif)$/, use: { loader: 'file-loader', options: { name: '[name]_[hash].[ext]', outputPath: 'images/', } } }] ``` #### url-loader * url-loader 功能类似于...
同样是基于入口的打包工具还有以下几个主流的: * rollup * parcel 从真实项目使用场景上来看: * rollup适用于基础库的打包,如vue、react * parcel适用于简单的实验性项目,他可以满足低门槛的快速看到效果 * webpack适用于大型复杂的前端站点构建
三者都是前端构建工具,grunt和gulp在早期比较流行,现在webpack相对来说比较主流,不过一些轻量化的任务还是会用gulp来处理,比如单独打包CSS文件等。 grunt和gulp是基于任务和流(Task、Stream)的。类似jQuery,找到一个(或一类)文件,对其做一系列链式操作,更新流上的数据, 整条链式操作构成了一个任务,多个任务就构成了整个web的构建流程。 webpack是基于入口的。webpack会自动地递归解析入口所需要加载的所有资源文件,然后用不同的Loader来处理不同的文件,用Plugin来扩展webpack功能。
### 思路分析 这里有一个小技巧, 可以轻松求出。 就是n & (n - 1) 可以消除 n 最后的一个1。 > 如果对位运算比较了解的话,那么相信你一定对上述这条`skill`很熟悉🙈 这样我们可以不断进行`n = n & (n - 1)`直到`n === 0` , 说明没有一个1了。通过`count`去计数即可~ ### 代码实现 ```js /** *...
### 思路分析 说实话,起初我能想到的就是暴力法(两层for循环) > 简单demo测试可以通过,但是提交时显示超时,显然这种方法似乎不可取 然后看了大佬的[题解](https://leetcode-cn.com/problems/reverse-pairs/solution/493-fan-zhuan-dui-by-alexer-660/) > 用的是归并排序,但现在也不是很明白。。。。 ### 代码解析 #### 暴力法(两层for循环) ```js /** * @param {number[]} nums * @return {number} */ var reversePairs = function(nums) { let count =...
### 思路分析 先来思考两个问题: * 什么情况下可以合并? * 怎么合并? 首先回答第一个问题:当上一个数组的`右包围`,大于下一个数组的`左包围`时,就可以合并。即 `intervals[i][1] >= intervals[i+1][0]` 。(这个的前提是数组已排过序) 接着回答第二个问题:合并时将 `intervals[i][0]` 与 `Math.max(intervals[i][1], intervals[i + 1][1])` ,分别作为合并后数组的左、右包围,组成一个数组。 ### 代码实现 ```js /** * @param {number[][]} intervals * @return...
### 思路分析 基于ES6 Map中keys的有序性来实现 一个`Map`对象在迭代时会根据对象中元素的插入顺序来进行 * get操作 如果元素存在,先`delete`再`set`, 元素便会置为最新使用;如果不存在,返回-1 * put操作 * 如果元素存在,先`delete`再`set`, 元素便会置为最新使用; * 如果容器超限,进行删除末尾元素操作,使用 `Map{}.keys().next()`得到迭代器的第一个元素,为使用时间最远的元素,进行删除 ### 代码实现 ```js /** * @param {number} capacity */ var LRUCache = function(capacity)...
### 思路分析 比较常规的,就是不断除以2,判断最终结果是否为1,对应`递归法`。 我们考虑一下有没有更快的解决方式:观察2^0、2^1、2^2......2^n,它们的二进制表示为1、10、100、1000、10000...... 判断一个数是否是2的n次幂,也就是判断二进制表示中是否只有一位是1且在最前面那位的位置。例如n=00010000,那n-1=00001111,即n&(n-1)==0 由此就可以判断啦! ### 代码实现 #### 递归 ```js /** * @param {number} n * @return {boolean} */ var isPowerOfTwo = function(n) { if (n < 1){ return...
### 思路分析 看到题目,我们首先想到的就是如何判重,其实分三种情况: * 当前行其它列是否有重复的数字 * 当前列其它行是否有重复的数字 * 当前网格所处子数独是否有重复的数字 接下来,将1~9的数字依次往空白处填充的过程其实就是一个回溯的过程。 ### 代码实现 ```js /** * @param {character[][]} board * @return {void} Do not return anything, modify board in-place instead. */...
### 思路分析 首先,这道题目通过两层遍历就可以解决。我们先初始化三个变量: * `rows`: 存放1-9横排的值 * `columns`: 存放1-9竖排的值 * `boxes`: 存放9个小九宫格的值 接下来就是两层遍历,进行对比:`rows[i]` 存放对应横坐标的值,`columns[j]` 存放对应纵坐标的值,boxes[boxIndex] 存放对应小盒子的值。关键就是这里的`boxIndex`怎么取? 我们再来看一下题目,这里用一下leetcode官方题解中的一张图:  不难得出如下的表格,对应就是`boxIndex`的取值: | +0 | 0 | 1 | 2 | | ---...