js版数据结构与算法
jiaojsun
做一只快乐的小码龙
展开
-
js版数据结构与算法—2.1环境搭建
1.搭建环境老师资料https://github.com/cucygh/fe-material.babelrc //关于es6的解析.eslintrc.js //关于eslint的配置package.json //依赖环境包...原创 2019-05-04 15:25:00 · 357 阅读 · 1 评论 -
js版数据结构与算法—0.1时间复杂度
时间复杂度 --运行时需要占用多少时间空间复杂度 --运行时需要占用多少内存情况一情况二情况三技巧原创 2019-05-05 22:17:23 · 383 阅读 · 0 评论 -
js版数据结构与算法—5.10快速排序-基础算法
export default (arr) => { let quickSort = (arr) => { let len = arr.length if (len < 2) { return arr } else { // 选标尺元素 let flag = arr[0] let left = [] ...原创 2019-05-05 19:27:47 · 195 阅读 · 1 评论 -
js版数据结构与算法—5.6最大区间
export default (arr) => { // 如果数组长度小于2返回0 if (arr.length < 2) { return 0 } // 排序 arr.sort() // 用它来保存相邻元素的最大差值 let max = 0 for (let i = 0, len = arr.length - 1, tmp; i <...原创 2019-05-05 15:42:14 · 193 阅读 · 0 评论 -
js版数据结构与算法—5.4第K个最大值(1)
export default (arr, k) => { return arr.sort((a, b) => b - a)[k - 1]}import sort from '../../code/sort/lesson2'test('sort:input 2', () => { expect(sort([3, 2, 1, 5, 6, 4], 2)...原创 2019-05-05 13:58:51 · 186 阅读 · 0 评论 -
js版数据结构与算法—5.3奇偶排序
奇偶排序的核心思想就是设置奇偶两个游标export default (arr) => { // 进行升序排序 arr.sort((a, b) => a - b) // 声明一个空数组用来存储奇偶排序后的数组 let r = [] // 记录奇数、偶数位下标 let odd = 1 let even = 0 // 对数组进行遍历 ar...原创 2019-05-05 13:26:28 · 260 阅读 · 0 评论 -
js版数据结构与算法—5.2选择排序
可以看出冒泡排序是不断把大的放后面(只和最近的作比较)选择排序是不断把小的放前面 (遍历整个后面作比较)本人觉得快速排序虽然代码量少,但是真心不好理解,可以参照下面的图为了方便理解,可以采用下面的记忆方式export default arr => { // 选择排序 for (let i = 0, len = arr.length, min; i < le...原创 2019-05-05 12:00:41 · 112 阅读 · 0 评论 -
js版数据结构与算法—5.1冒泡排序
https://www.jianshu.com/p/f4cca5ce055a循环的次数 时间复杂度占用的内存 空间复杂度为了方便理解5274631(a)5和2比较=》沉(2574631), 2和7比较=》不动(2574631),7和4比较=》沉(2547631),7和6比较=》沉(2546731),7和3比较=》沉(2546371),7和1比较=》沉(...原创 2019-05-05 10:13:51 · 148 阅读 · 0 评论 -
js版数据结构与算法—3.8格雷编码
export default (n) => { // 递归函数,用来算输入为n的格雷编码序列 let make = (n) => { if (n === 1) { return ['0', '1'] } else { let prev = make(n - 1) let result = [] let max...原创 2019-05-05 09:27:45 · 145 阅读 · 1 评论 -
js版数据结构与算法—3.6种花问题-原理讲解
export default (arr, n) => { // 计数器 let max = 0 // 右边界补充[0,0,0],最后一块地能不能种只取决于前面的是不是1,所以默认最后一块地的右侧是0(无须考虑右侧边界有阻碍)(LeetCode测试用例) arr.push(0) for (let i = 0, len = arr.length - 1;...原创 2019-05-04 23:04:07 · 303 阅读 · 0 评论 -
js版数据结构与算法—3.4卡牌分组-原理讲解
原创 2019-05-04 22:05:38 · 215 阅读 · 0 评论 -
js版数据结构与算法—3.3电话号码组合-代码演示
export default (str) => { // 对输入做处理,如果小于1返回空(LeetCode测试用例) if (str.length < 1) return [] // 建立电话号码键盘映射 let map = ['', 1, 'abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz'] // 如...原创 2019-05-04 20:57:49 · 303 阅读 · 0 评论 -
js版数据结构与算法—3.2电话号码组合-原理讲解
注意下面。arr是一个二维数组原创 2019-05-04 20:11:22 · 189 阅读 · 0 评论 -
js版数据结构与算法—3.1数组题目介绍
原创 2019-05-04 19:44:42 · 129 阅读 · 0 评论 -
js版数据结构与算法—2.5计算子串代码演示
// 关于 LeetCode 测试用例字符串过长导致 RegExp too big的问题暂时不予修复// 我认为这个测试用例不合理,无论在面试中还是实际应用中这个算法思路都是足够用的// 我建议大家不要为了刷题而刷题export default (str) => { // 建立数据结构,堆栈,保存数据 let r = [] // 给定任意子输入都返回第一个符合条件的子串...原创 2019-05-04 17:22:03 · 487 阅读 · 0 评论 -
js版数据结构与算法—2.4计算子串原理讲解
原题原创 2019-05-04 16:49:55 · 310 阅读 · 0 评论 -
js版数据结构与算法—2.3反转单词代码演示
接上一节反转字符串也可以用正则的办法export default (str) => { // 1. 字符串按空格进行分隔,保存数组,数组的元素的先后顺序就是单词的顺序 // 2. 对数组进行遍历,然后每个元素进行反转 return str.split(/\s/g).map(item => { return item.split('').reverse()....原创 2019-05-04 16:33:33 · 155 阅读 · 0 评论 -
js版数据结构与算法—2.2反转单词原理讲解
1.简单算法2.字符串题目一思路:a.字符串变成数组。b.每个单词反转string.js(以下是两种写法)export default (str) => { // 字符串按空格进行分隔,保存数组,数组的元素的先后顺序就是单词的顺序 let arr = str.split(' ') // 对数组进行遍历,然后每个元素进行反转 let resul...原创 2019-05-04 16:27:17 · 117 阅读 · 0 评论