Leetcode
Leetcode
emacs leecode-client
目前已经有大佬写出了emacs的leecode插件,还有什么理由不好好学习呢?
安装步骤
M-x package-install leetcode
使用
M-x leetcode 发现会装很多的python依赖
leetcode题目
two sum(两数之和)
|
|
暂时还有点问题 TODO:fix
1 | 3[0 | 0] |
旋转矩阵
https://leetcode-cn.com/leetbook/read/array-and-string/clpgd/
旋转矩阵我观察起来,是多组4个值交换,然后控制交换的次数,如何按顺序循环
再分析交换的次数其实就是有几个环,简单看下
3x3的时候只有1个环+1个中心
4x4的时候有两个环
5x5的时候有两个环+1个中心
6x6的时候有三个环
7x7的时候有3个环加1个中心
所以cols/2就是环数,也就是循环的数量
循环的终止条件是啥呢?
3x3的时候是从00,01,(02不用),
4x4的时候是从00,01,02,3(不用), 11,12(不用)
你可能已经发现了
循环外层遍历环
循环开始的时候是依次从(ii,)一直到边界
还有一个就是矩阵的x,y对应关系,以一个4*4矩阵来说 a[0][0],a[0][1],a[0][2],a[0][3],
a[1][0],a[1][1],a[1][2],a[1][3],
a[2][0],a[2][1],a[2][2],a[2][3],
a[3][0],a[3][1],a[3][2],a[3][3]
大致可以得到旋转对应的下标 a[i][j] a[j][4-1-i],行就是上一个的列,列就是index和行的差值 a[4-1-i][4-1-j],和旁边的比,同一个道理 a[4-1-j][i],套用行就是上一个的列
知道上述了我们开始编码哈
|
|
matrix[0][0]: | 7 |
matrix[0][1]: | 4 |
matrix[0][2]: | 1 |
matrix[1][0]: | 8 |
matrix[1][1]: | 5 |
matrix[1][2]: | 2 |
matrix[2][0]: | 9 |
matrix[2][1]: | 6 |
matrix[2][2]: | 3 |
matrix1[0][0]: | 15 |
matrix1[0][1]: | 13 |
matrix1[0][2]: | 2 |
matrix1[0][3]: | 5 |
matrix1[1][0]: | 14 |
matrix1[1][1]: | 3 |
matrix1[1][2]: | 4 |
matrix1[1][3]: | 1 |
matrix1[2][0]: | 12 |
matrix1[2][1]: | 6 |
matrix1[2][2]: | 8 |
matrix1[2][3]: | 9 |
matrix1[3][0]: | 16 |
matrix1[3][1]: | 7 |
matrix1[3][2]: | 10 |
matrix1[3][3]: | 11 |
零矩阵
https://leetcode-cn.com/leetbook/read/array-and-string/ciekh/
想了下还是用最low的办法按照位置标记,其实按行按列标记会更好一点
|
|
1 | 1 | 1 | |
1 | 0 | 1 | |
1 | 1 | 1 | |
1 | 0 | 1 | |
0 | 0 | 0 | |
1 | 0 | 1 | |
0 | 1 | 2 | 0 |
3 | 4 | 5 | 2 |
1 | 3 | 1 | 5 |
0 | 0 | 0 | 0 |
0 | 4 | 5 | 0 |
0 | 3 | 1 | 0 |