程序员面试金典---23
整数英语的表示
思路:三位一写。
/** * @param {number} num * @return {string} */ var numberToWords = function(num) { const singles = ["", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"]; const teens = ["Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"]; const tens = ["", "Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"]; const thousands = ["", "Thousand", "Million", "Billion"]; // 判断 const recursion = (cur, num) => { if(num === 0) return else if(num < 10){ cur.push(singles[num] + " ") }else if(num < 20){ cur.push(teens[num - 10] + " ") }else if(num < 100){ cur.push(tens[Math.floor(num / 10)] + " ") recursion(cur, num % 10) }else{ cur.push(singles[Math.floor(num / 100)] + " Hundred ") recursion(cur, num % 100) } } if(num === 0){ return "Zero" } const sb = [] for(let i = 3, unit = 1000000000; i >= 0; i--, unit = Math.floor(unit / 1000)){ const curNum = Math.floor(num / unit) if(curNum !== 0){ num -= curNum * unit const cur = [] recursion(cur,curNum) cur.push(thousands[i] + " ") sb.push(cur.join('')) } } return sb.join('').trim() };
生存人数
思路:差分数组
/** * @param {number[]} birth * @param {number[]} death * @return {number} */ var maxAliveYear = function(birth, death) { let len = birth.length let a = new Array(2003).fill(0) // 左加一右减一 for(let i = 0; i < len; i++){ let x = birth[i], y = death[i] a[x] += 1 a[y + 1] -= 1 } // 前缀和求解 let max = 0 let idx = 0 let sum = 0 for(let i = 1900; i <= 2000; i++){ sum += a[i] if(max < sum){ max = sum idx = i } } return idx };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!