附件算法
一、代码简洁、可读性设计模式
二、考虑时间O、空间复杂度数据结构
一、业务函数向通常工具函数的抽象,避免重复造轮子dom
二、经典问题都已有“最佳”解(学习设计模式、数据结构算法)函数
写法已经相对最优、较高人效工具
一、本身平时固然要造足够多的轮子单元测试
// 剩余7人瓜分34鲜币,每一个人得到鲜币数随机得到 // 方案1: 14个留出来,每人至少2个 /* * *total 总数 物品数 *person 被分配人数 容器数 *least 每一个人最少分配几个 保底数 * *业务----> 抽象 ---> 脱离业务的工具函数 *算法最优 时间复杂度O最小 先实现再优化,注意边界条件 代码编写过程 须要单元测试和eslint语法检测 代码执行结果须要 可视化配合看效果 */ function random(total = 34, person = 7, least = 2){ let reserve = person * least; //14 if(total < reserve){ console.error("参数不合法") } let result = new Array(person).fill(least) let distribution = total - reserve; //20 for(let i = 0; i < person; i++){ let cur = Math.floor(Math.random()*distribution) result[i] = cur+least if(distribution - cur <= 0){ break; }else{ distribution = distribution - cur } } return result; }