算法二、

1 台阶问题/斐波纳挈

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

第二种记忆方法

第三种方法

2 变态台阶问题

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

3 矩形覆盖

我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

2*n个矩形的覆盖方法等于第2*(n-1)加上第2*(n-2)的方法。

4 杨氏矩阵查找

在一个m行n列二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

5 去除列表中的重复元素

用集合

用字典

用字典并保持顺序

列表推导式

面试官提到的,先排序然后删除.

6 链表成对调换

1->2->3->4转换成2->1->4->3.

7 创建字典的方法

1 直接创建

2 工厂方法

3 fromkeys()方法

8 合并两个有序列表

知乎远程面试要求编程

尾递归

循环算法

9 交叉链表求交点

去哪儿的面试,没做出来.

10 二分查找

11 快排

12 找零问题

13 广度遍历和深度遍历二叉树

给定一个数组,构建二叉树,并且按层次打印这个二叉树

17 前中后序遍历

深度遍历改变顺序就OK了

18 求最大树深

19 求两棵树是否相同

20 前序中序求后序

推荐: http://blog.csdn.NET/hinyunsin/article/details/6315502

21 单链表逆置

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Node(object):
    def __init__(self, data=None, next=None):
        self.data = data
        self.next = next
 
link = Node(1, Node(2, Node(3, Node(4, Node(5, Node(6, Node(7, Node(8, Node(9)))))))))
 
def rev(link):
    pre = link
    cur = link.next
    pre.next = None
    while cur:
        tmp = cur.next
        cur.next = pre
        pre = cur
        cur = tmp
    return pre
 
root = rev(link)
while root:
    print root.data
    root = root.next
posted @ 2017-04-12 00:09  pyrene  阅读(195)  评论(0编辑  收藏  举报