从LeetCode挑战到代码重生:开发者如何保持技术敏锐度

作者分享在AI工具普及的时代如何通过LeetCode算法挑战、国际象棋练习等方式保持编程思维敏锐度的个人历程,包含具体代码实现和思维训练方法,帮助开发者避免过度依赖AI而丧失独立解决问题的能力。

#01 - 我的开发者重塑之路

随着LLMs的进步,软件开发变得更加敏捷和易用。这些工具加速了流程并扩展了可能性,但正如某位智者曾说过:“能力越大,责任越大。”

是的,像Copilot或Claude这样的工具确实优化了时间,但也减少了那些保持技术推理敏锐的智力挑战。 所以我并不是要停止使用AI,而是要给大脑应有的挑战。这是记录这段旅程的系列文章的开端。 我从基础开始:chess.com上的一些挑战,Duolingo上的国际象棋挑战,当然还有经典LeetCode(但这只是我日常中的最后一步),从小挑战开始并将它们变成小爱好对我帮助很大,我从未对我的日常做出剧烈改变,以至于我直到一段时间后才专注于LeetCode。

尽管LeetCode是后来才成为重点,但正是LeetCode(或其竞争对手)成为了我意识到需要自我更新的起点。在某个无聊的周六,我在HackerRank(一个与LeetCode非常相似的网站)上看到了一个挑战,这是一个相当简单的挑战:

“给定一个正整数数组,返回有多少元素大于之前所有元素的平均值。”

看起来很简单,对吧?但在那个周六,我的大脑完全卡住了。 在重新开始练习逻辑推理习惯一周后,我能在约10分钟内解决同样的问题(好吧,还是有点生疏:P),让你们亲眼看看,这是最终的解决方案:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
public static int countResponseTimeRegressions(List<Integer> responseTimes) {
    if (responseTimes == null || responseTimes.size() < 2) {
        return 0;
    }

    int count = 0;
    long cumulativeSum = responseTimes.get(0);

    for (int i = 1; i < responseTimes.size(); i++) {
        double previousAverage = cumulativeSum / i;
        if (responseTimes.get(i) > previousAverage) {
            count++;
        }
        cumulativeSum += responseTimes.get(i);
    }

    return count;
}

我的建议:找到一种锻炼大脑的方法,最好是你们喜欢的方式。在接下来的文章中,我将记录这个旅程的进展,并分享出现的新发现。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计