阅读优秀代码
约 10 分钟
读优秀题解,读的不是"答案",而是"结构":它怎么把逻辑拆成小函数、变量怎么命名、边界怎么优雅处理。读到会心处,盖住原文自己重写一遍,能一次写对才算真的吸收;只看不写,等于没读。
比如这段求最小公倍数的代码,短短几行藏着两处值得学的细节:
int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
long long lcm(int a, int b) {
return (long long)a / gcd(a, b) * b; // 先除后乘, 防溢出
}
一是职责单一:gcd 只管最大公约数,lcm 复用它,逻辑清爽;二是那句"先除后乘"——数学上 ,但若先算 可能超过 int,所以先用 (一定整除)再乘 ,既正确又不溢出。这种"看似能跑却暗藏溢出"的处理,正是从优秀代码里偷师的重点。读完请合上,凭理解重写。
小纸条
读完自己重写一遍,不看原文。
登录 后可看答案