刷题好久了,陆陆续续做了 500 多道题了,但是给感觉进步很有限。也参加过几场周赛,基本都是两题选手状态,有时甚至只能做出一道。
今天参加了第 381 场模拟周赛,心态彻底崩了。
首先是看不懂题(不限于这场周赛),每次读题都要读半天,必须咬文嚼字才能理题意。我现在甚至有点害怕见到字数多的题了。
其次是想破脑袋不会做,真的不会做。比如这场周赛,盯着最简单的第一题,盯了 15 分钟,愣是毫无思路。这道题的问题规模很小,但哪怕是暴力解法,我也想不出怎么个暴力法。于是心态爆炸了:

第三,做过的题目,学过的算法,老是忘记,仿佛从来不曾学过一样。比如这场周赛的第二题。虽然我很快想到可以用多源最短路的方式解决,且时间复杂度不会超标,但是弗洛伊德算法早被我忘记到爪哇国了,决定用 BFS 暴力求解。可怕的是,BFS 我似乎也不会写了,debug 了 N 次,才写出下面的屎山代码,而此时距离模拟周赛结束只剩下 15 分钟了:
class Solution {
public int[] countOfPairs(int n, int x, int y) {
// 建图
ArrayList<Integer>[] graph = new ArrayList[n + 1];
for(int i = 1; i <= n; i++) graph[i] = new ArrayList<Integer>();
for(int i = 1; i < n; i++){
graph[i].add(i + 1);
graph[i + 1].add(i);
}
if(Math.abs(x - y) > 1){
graph[x].add(y);
graph[y].add(x);
}
int[][] paths = new int[n + 1][n + 1];
for(int u = 1; u <= n; u++){
boolean[] visited = new boolean[n + 1];
Queue<Integer> q = new LinkedList<>();
q.offer(u);
visited[u] = true;
int path = 0;
while(!q.isEmpty()){
path++;
int size = q.size();
while(size-- > 0){
int p = q.poll();
for(int v: graph[p]){
if(visited[v]) continue;
visited[v] = true;
q.offer(v);
paths[u][v] = path;
}
}
}
}
int[] ret = new int[n];
for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++){
// System.out.println(i + "_" + j + "_" + paths[i][j]);
if(paths[i][j] != 0)ret[paths[i][j] - 1]++;
}
return ret;
}
}第四,看不懂题解。刷每日一题,或者复盘周赛,总是要盯着题解看很久很久很久,才能勉强看懂。
起先,我还以为我只是受药物影响,认知能力受损了。不过我今天决定面对现实:智商碾压这件事情真的是存在的,我可能永远无法上 k 也无法拿到瓜了,我的智商在刷题这条路上,可能也就这样了。人固然不应该被划分成三六九等,但是智商的鸿沟,真的无法跨越,至少在 leetcode 比赛中,对我来说无法跨越。
不要安慰我,让我哭会。。。。