主对角线是 ↘(从左上角到右下角)。现在自己非常喜欢刷题,感觉到了一种刷题的快感。我是说刷 leetcode 的题单。感觉就是想要做的东西太多了,然后少数核心资料静不下心来吃透。我算法题这块就刷 leetcode hot 100 目前刷了 20 题了。另外,我就每天刷一个题。就像那句话,我只相信缓慢平和、细水长流的力量。关键在于频度,每天都在慢慢地学习就好了。一天就写一个题。把这个题吃透就完事了。观察之后可以发现,本质就是转置 + 反转。实现这两个要求就可以秒杀这个题。应试必须做减法。少数资料+熟练=胜利。从 j = i + 1 开始循环,而不是从 j = 0 开始循环,是为了只转置右上角的,换句话说,如果从 0 开始交换,可能多换了导致结果错误。就是比如说,最开始交换,matrix[0][1] 和 (1,0) ,后面会再交换一次 (1,0) 和 (0,1) 两次交换就没动。每天就只写一个题,一定要积累,并且是缓慢的积累。不要一暴十寒,这是最没有效果的。细水长流水到渠成是最稳的方法。
cpp
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int n = matrix.size();
for ( int i = 0; i < n; i++ ) {
for ( int j = i + 1; j < n; j++ ) {
swap( matrix[i][j], matrix[j][i] );
}
}
for ( int i = 0; i < n; i++ ) {
reverse( matrix[i].begin(), matrix[i].end() );
}
}
};
day 1
还是要早点睡觉。感觉自己还是,适合早点儿睡觉呢。单词好多,不想背,还剩 2000 多个需要新学,有 1000 多个需要复习。我不想复习,只想先把 2000 多个学习完,然后再慢慢复习,今天距离这个月结束大概还有 20 天,每天爬也要爬 150 个单词。150 * 20 = 3000 足够全部背完了。感觉背太多单词太累了。今天就考虑清楚了,每次背 40 个,咬咬牙还是可以接受的。就是怎么做呢,上午刚起床背 40 个,下午背 40 个,晚上背 40 个,剩下的不管了。qtmd. 现在是晚上,可以再背 40 个单词,目前是 67,背到 107,另外,可以这么考虑,在家可以做一些俯卧撑或者深蹲,也可以去公园做做引体向上。豆包是真的好用,我问他,他给我列了俯卧撑、深蹲、臀桥、平板支撑、箭步蹲、小燕飞,感觉非常不错。完成了 107 了。可以了。明天再复习就可以了。就是上午 40 个,下午 40 个,晚上 40 个。难的不是单词,是坚持。每天给自己灌鸡汤,只希望最后自己可以成功。成功之后就开始装逼。没成功之前就沉淀。沉淀。