随笔分类 - Offers
摘要:二维数组的查找 需要注意的是看清楚题目,如果该矩阵的某行的最后一个小于其下一行的第一个,那么下面的做法是合适的,但是如果是该矩阵的某行的最后一个数值和下一行的第一个没有任何关系,那么下面的做法则是不合适的。前者标记为题型1,后者标记为题型2 题型1 做法1 从第一行的最后一列开始搜索(从其他方向应该
阅读全文
摘要:栈的压入、弹出序列 这道题首先要借助一个辅助的数组,用来模拟实现的过程。 我想的有点复杂,把栈的push和pop分成两个步骤来想,其实没有必要,只需要将用一个循环实现push,在内部循环使用pop即可。 class Solution: def IsPopOrder(self, pushV, popV
阅读全文
摘要:树的子结构 这道题需要注意的是,怎么才能称作是树的子结构,是允许一部分相同,还是说必须到叶结点也要相等?如果是前者,则不需要判断双方当前是否已经到达了叶结点,而后者是需要的。 不需要到叶结点 class Solution(object): def recursive(self, s, t): if
阅读全文
摘要:链表中倒数第k个结点 使用两个指针,一个先移动k-1步,另一个从头指针开,思路很简单,但是需要注意代码的鲁棒性,不如会遇到头结点为空,或者输入的k超出链表自身的长度等等问题。 class Solution: def FindKthToTail(self, head, k): # write code
阅读全文
摘要:打印1到最大的n位数 就是一个DFS,假设为1位数,可以发现其结果是从1到9,考虑到大数的关系,我们可以使用一个字符数组来表示(因为字符串是不可变的),用0到9来代入到字符数组中对应的下标中,每增加一个下标说明增加DFS的一层。 def print1ToMaxOfNDigits(n): if n <
阅读全文