leetcode每天刷题很有用是怎么回事呢?leetcode相信大家都很熟悉,但是leetcode每天刷题很有用是怎么回事呢,下面就让小编带大家一起了解吧。
leetcode每天刷题很有用,其实就是每天刷一道力扣题目提高脱发速度,大家可能会很惊讶leetcode怎么会每天刷题很有用呢?但事实就是这样,小编也感到非常惊讶。这就是关于leetcode每天刷题很有用的事情了,大家有什么想法呢,欢迎在评论区告诉小编一起讨论哦!
今天我们先从leetcode之spiral matrix开始吧!摩根士丹利的校招中也考到了这题哦!
题目如下图!别看是英文其实很好理解就是把一个矩阵顺时针打印出来~~~~~
审题并不难~
审题很快~
下面小编就开始做了哦~~~
第一步:想想想思路~整体思路就跟随审题思路了,怎么打印矩阵,我们的指针就怎么走~~(这里有张小编找的图,很全的思路了~~~)
第二步:写写写代码~~~
小编选择了C语言~~~
首先leetcode贴心的给出了变量~
int* spiralOrder(int** matrix, int matrixSize, int* matrixColSize, int* returnSize){
}
分别是一个整形变量的指针的指针int** matrix,一个变量存矩阵行 int matrixSize,一个指针存矩阵列,一个指针存返回大小~
下面开始写啦,看看这些变量如何运用呢!小编也非常好奇!
第一种情况一定要考虑啦!!! 是不是根本没有矩阵要输出呢(矩阵大小为0)??
if (matrix == NULL || matrixSize == 0 || *matrixColSize == 0) {
*returnSize = 0;
return NULL;}
接着如果矩阵有大小,必须要先计算出矩阵的大小哦!!!
int total = matrixSize * (* matrixColSize);
int index = 0;
int *order = (int *)malloc(sizeof(int) * total);
然后就开始顺时针打印了~~~
int left = 0,right = (*matrixColSize) - 1,top = 0,bottom = matrixSize - 1;
先定下四个角落~~~非常关键哦!
while (left
for (int column = left; column
order[index++] = matrix[top][column];
}
for (int row = top + 1; row
order[index++] = matrix[row][right];
}
if (left < right && top < bottom) {
for (int column = right - 1; column > left; column--) {
order[index++] = matrix[bottom][column];
}
for (int row = bottom; row > top; row--) {
order[index++] = matrix[row][left];
}
}
left++;
right--;
top++;
bottom--;
}
*returnSize = total;
return order;
}
打印的过程就是把相应的值存入一维数组order喽!!!
听小编讲完有没有觉得非常有趣呢!
这今天就是关于leetcode每天刷题很有用的事情了,大家有什么想法呢,欢迎在评论区告诉小编一起讨论哦!
领取专属 10元无门槛券
私享最新 技术干货