猫狗队列问题
- 题目描述如图: .
- 猫狗队列代码.
转圈打印矩阵(matrix)
-
题目: 给定一个矩阵,请你按照顺时针转圈的方式打印它,如图:
-
如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 打印结果应该为:1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10.
-
这类似的题目不能去想如何由第一个下标变成第二个下标,然后第二个下标如何变成第三个下标这样子,这样子会贼难写,而且边界还很容易出错.
-
正确思路:用一种宏观的感觉,找到矩阵的左上角位置(a,b),和右下角下标(c,d),我们通过a,b,c,d四个点可以确定一个框,这个框正是我们要打印的一圈, 如图: .
将二维数组旋转90°然后输出
-
例子:
原数组: 1 2 3 4 5 6 7 8 9 转换后的数组: 7 4 1 8 5 2 9 6 3
-
思路:和上面一样,用一种宏观的思路,给定左上角和右下角的坐标位置,先转外面一圈,然后转里面一圈,直到左上角元素坐标大于右下角坐标为止,不过这种题就有点扣边界,反正我做这种题就很难受,可能因为我逻辑思维太差了吧.
之字形打印矩阵
- 题目: .
- 示例: .
- 思路: .
- 之字形打印矩阵代码.
- 注意: 暂时不变的放在前面,免得暂时变化的会影响,比如这题中的左上角的行要放在列的后面!!!不然会搞死人的.
反转链表
这个博客的图画的巨好,巨容易懂,也算是夏天的一丝清凉,真的是要热死了: 理解反转链表
-
题目: 输入一个链表,反转链表后,输出新链表的表头,
在行列都排好序的矩阵中找数
- 题目: .
- 思路:
- 注意这里的行和列都是从小到大有序的.
- 先确定右上角
A
的坐标(左下角也行,其实四个角都行,看你自己,这里以右上角为例),然后判断和要找的元素的大小.A
比目标元素大,就左移.A
比目标元素小,说明A
这个元素左边的都比目标元素小,就往下走.- 总的来说,就是大就往左移,小就往下移,最后还没有就返回false.
- 在行列都有序的矩阵中找目标值代码.
打印两个有序链表的公共部分
- 思路: 可以理解为归并排序的归并部分执行的行为.
- 打印有序链表公共部分代码.
判断一个链表是否为回文结构
- 题目: .
- 最难理解的就是两个逆序的过程,多想想画一画,我反正这个题搞了我一上午.
- 判断一个链表是否为回文结构代码.
将单向链表按某值划分成左边小, 中间相等, 右边大的形式
.
- 第一问:
- 思路: 类似荷兰国旗,因为第一问不要求稳定性,所以我们可以把单向链表放在一个数组中,然后在数组中排好序以后,再转化为链表形式.
- 将链表存放在数组中代码.
- 此时时间复杂度和额外空间复杂度都为
O(N)
.