数据结构与算法之美(三)跳表跳表:带有多级索引的链表。 跳表使用空间换时间的设计思路,通过构建多级索引来提高查询的效率,实现了基于链表的“二分查找”。跳表是一种动态数据结构,支持快速的插入、删除、查找操作,时间复杂度都是O(logn)。 2021-07-26 读书笔记 #读书笔记 #技术
数据结构与算法之美(二)递归递归需要满足的三个条件 一个问题的解可以分解为几个子问题的解 何为子问题?子问题就是数据规模更小的问题。 这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样 存在递归中止条件 把问题分解为子问题,把子问题再分解为子子问题,一层一层分解下去,不能存在无限循环,这就需要有终止条件。 2021-07-21 读书笔记 #读书笔记 #技术
数据结构与算法之美(一)基础知识20个最常用的、最基础数据结构与算法10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树。 10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。 2021-07-20 读书笔记 #读书笔记 #技术
重构-改善既有代码的设计(七)处理继承关系函数上移(Pull Up Method) 示例 123456789class Employee {...}class Saleman extends Employee { get name() {...}}class Engineer extends Employee { get name() 2021-06-27 读书笔记 #读书笔记 #技术
重构-改善既有代码的设计(六)重构API将查询函数和修改函数分离(Separate Query from Modifier) 示例 12345function getTotalOutatandingAndSendBill(){ const result = customer.invoices.reduce((total, each) => each.amount + total, 0); sen 2021-06-21 读书笔记 #读书笔记 #技术
重构-改善既有代码的设计(五)重新组织数据拆分变量(Split Variable) 示例 1234let temp = 2 * (height + width);console.log(temp);temp = height * width;console.log(temp); 重构为 1234let perimeter = 2 * (height + width);console.log(perimeter); 2021-06-20 读书笔记 #读书笔记 #技术
重构-改善既有代码的设计(四)搬移特性搬移函数(Move Function) 示例 123class Account{ get overdraftCharge() {...}} 重构为 123class AccountType{ get overdraftCharge() {...}} 2021-05-24 读书笔记 #读书笔记 #技术
重构-改善既有代码的设计(三)封装封装记录(Encapsulate Record) 示例 1organization = {name: "Acme Gooseberries",country:"GB"}; 重构为 12345678910class Oraganization{ constructor(data){ 2021-05-06 读书笔记 #读书笔记 #技术
重构-改善既有代码的设计(二)重构名录-第一组重构提炼函数(Extract Function) 示例 12345678function printOwing(invoice){ printBanner() let outstanding = calculateOutstanding(); // print details console.log(`name:${invoice.c 2021-04-27 读书笔记 #读书笔记 #技术