猫狗队列问题
设计一个结构,既可以存储dog类对象也可以存储cat类对象,然后可以实现poll,add,isempty等操作
在这个结构里面有一个狗队列和一个猫队列,但是狗和猫的相对位置需要加入一个时间戳的概念
所以在队列里面加一个变量count来表示这个时间戳的概念,每加入一个宠物就count++,再存到宠物的队列里
然后弹出的时候,看猫的count小还是狗的count小,谁大返回谁的
转圈打印矩阵
按照分圈的结构把它解决掉,就单独某一圈来说写一个单元函数
这个单独的函数需要解决一下边界的问题,比如左边界=右边界的时候,只用打印一行或者一列就行了
写完单元函数以后,调用这个函数,每次把左上角往右下移动一位,把右下角往左上移动一位,然后写一个训完调用很多次就行了
原地进行矩阵旋转,不申请额外的空间
这其实和上面一样,还是一个单元函数的思想,虽然旋转的是整个矩阵,但我们仍然可以分别成一层一层的转,那么只需要写一层的函数就够了
对于单独一层来说就很好写了,举一个例子看一下怎么交换位置就可以了
注意如果是长方形没法写,数据结构都变了
之字打印矩阵
基础的思路还是写单元化的函数
设计两个点A和B,A往右走,B往下走,直到遇到边界,A到边界了就往下走,B到边界了就往往右走,直到A和B相遇了就结束打印了
然后在实现左上打印到右下(A打印到B)和右下打印到左上(B打印到A)的过程,用一个flag来变化
那么我们写的单元函数就是从一个点打印到另一个点的对角线,再宏观地对这个函数进行调度