阅读《剑指Offer》做的一些笔记。
该书系统地总结了如何在面试时写出高质量代码,如何优化代码效率,以及分析、解决难题的常用方法。书中对于问题算法的给出C++描述。本人阅读该书,深感有所收获和启发。选取部分有意思的问题及算法,python实现。
数组
输入一个数字N,按顺序打印从1到最大的n位十进制数
1 | ''' |
把数组中的数字区分两部分,奇数在前部分,偶数在后
1 | ''' |
在二维数组中找n,判断是否在其中
1 | ''' |
快速排序
1 | ''' |
求字符串的全排列
1 | string = ['a','b','c','\n'] |
链表
链表的部分基本方法实现
1 | ''' |
反转链表
1 | ''' |
合并两个升序的链表,返回合并之后的升序链表头结点
1 | ''' |
二叉树
二叉树的构造和遍历
1 | ''' |
判断树的子结构
1 | ''' |
镜像二叉树
1 | ''' |
二叉搜索树的后序遍历序列与数组比对
1 | ''' |
二叉树中和为某一值得路径
1 | ''' |
栈
栈内最小元素的mini函数时间复杂度为O(1)
1 | ''' |