附件算法
一、代碼簡潔、可讀性設計模式
二、考慮時間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; }