88
88
- [ 编程题] ( # )
89
89
- [ 1 台阶问题/斐波纳挈] ( #1- )
90
90
- [ 2 变态台阶问题] ( #2- )
91
- - [ 矩形覆盖] ( # )
92
- - [ 2 杨氏矩阵查找] ( #2- )
93
- - [ 3 去除列表中的重复元素] ( #3- )
94
- - [ 4 链表成对调换] ( #4- )
95
- - [ Definition for singly-linked list.] ( #definition-for-singly-linked-list )
96
- - [ class ListNode:] ( #class-listnode )
97
- - [ def __ init__ (self, x):] ( #def-initself-x )
98
- - [ self.val = x] ( #selfval--x )
99
- - [ self.next = None] ( #selfnext--none )
100
- - [ 创建字典的方法] ( # )
91
+ - [ 3 矩形覆盖] ( #3- )
92
+ - [ 4 杨氏矩阵查找] ( #4- )
93
+ - [ 5 去除列表中的重复元素] ( #5- )
94
+ - [ 6 链表成对调换] ( #6- )
95
+ - [ 7 创建字典的方法] ( #7- )
101
96
- [ 1 直接创建] ( #1- )
102
97
- [ 2 工厂方法] ( #2- )
103
98
- [ 3 fromkeys()方法] ( #3-fromkeys )
104
- - [ dict={'x':-1,'y':-1}] ( #dictx-1y-1 )
105
- - [ dict2={'x': None , 'y': None }] ( #dict2xnone-ynone )
106
- - [ 合并两个有序列表] ( # )
107
- - [ 交叉链表求交点] ( # )
99
+ - [ 8 合并两个有序列表] ( #8- )
100
+ - [ 9 交叉链表求交点] ( #9- )
108
101
- [ Definition for singly-linked list.] ( #definition-for-singly-linked-list )
109
102
- [ class ListNode:] ( #class-listnode )
110
103
- [ def __ init__ (self, x):] ( #def-initself-x )
111
104
- [ self.val = x] ( #selfval--x )
112
105
- [ self.next = None] ( #selfnext--none )
113
- - [ 二分查找] ( # )
114
- - [ 快排] ( # )
115
- - [ 找零问题] ( # )
116
- - [ 广度遍历和深度遍历二叉树] ( # )
117
- - [ 二叉树节点] ( # )
118
- - [ 层次遍历] ( # )
119
- - [ 深度遍历] ( # )
120
- - [ 前中后序遍历] ( # )
121
- - [ 求最大树深] ( # )
122
- - [ 求两棵树是否相同] ( # )
123
- - [ 前序中序求后序] ( # )
106
+ - [ 10 二分查找] ( #10- )
107
+ - [ 11 快排] ( #11- )
108
+ - [ 12 找零问题] ( #12- )
109
+ - [ 13 广度遍历和深度遍历二叉树] ( #13- )
110
+ - [ 14 二叉树节点] ( #14- )
111
+ - [ 15 层次遍历] ( #15- )
112
+ - [ 16 深度遍历] ( #16- )
113
+ - [ 17 前中后序遍历] ( #17- )
114
+ - [ 18 求最大树深] ( #18- )
115
+ - [ 19 求两棵树是否相同] ( #19- )
116
+ - [ 20 前序中序求后序] ( #20- )
124
117
- [ 重建] ( # )
125
118
- [ 后序遍历] ( # )
126
- - [ 单链表逆置] ( # )
119
+ - [ 21 单链表逆置] ( #21- )
127
120
128
121
<!-- markdown-toc end -->
129
-
130
-
131
122
132
123
# Python面试题集
133
124
@@ -990,7 +981,7 @@ fib(1000)
990
981
fib = lambda n : i if n < 2 else 2 * fib(n - 1 )
991
982
```
992
983
993
- ## 矩形覆盖
984
+ ## 3 矩形覆盖
994
985
995
986
我们可以用` 2*1 ` 的小矩形横着或者竖着去覆盖更大的矩形。请问用n个` 2*1 ` 的小矩形无重叠地覆盖一个` 2*n ` 的大矩形,总共有多少种方法?
996
987
@@ -1000,11 +991,11 @@ fib = lambda n: i if n < 2 else 2 * fib(n - 1)
1000
991
f = lambda n : 1 if n < 2 else f(n - 1 ) + f(n - 2 )
1001
992
```
1002
993
1003
- ## 2 杨氏矩阵查找
994
+ ## 4 杨氏矩阵查找
1004
995
1005
996
在一个m行n列二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
1006
997
1007
- ## 3 去除列表中的重复元素
998
+ ## 5 去除列表中的重复元素
1008
999
1009
1000
用集合
1010
1001
@@ -1039,16 +1030,15 @@ l2 = []
1039
1030
1040
1031
面试官提到的,先排序然后删除.
1041
1032
1042
- ## 4 链表成对调换
1033
+ ## 6 链表成对调换
1043
1034
1044
1035
` 1->2->3->4 ` 转换成` 2->1->4->3 ` .
1045
1036
1046
1037
``` python
1047
- # Definition for singly-linked list.
1048
- # class ListNode:
1049
- # def __init__(self, x):
1050
- # self.val = x
1051
- # self.next = None
1038
+ class ListNode :
1039
+ def __init__ (self , x ):
1040
+ self .val = x
1041
+ self .next = None
1052
1042
1053
1043
class Solution :
1054
1044
# @param a ListNode
@@ -1062,7 +1052,7 @@ class Solution:
1062
1052
return head
1063
1053
```
1064
1054
1065
- ## 创建字典的方法
1055
+ ## 7 创建字典的方法
1066
1056
1067
1057
### 1 直接创建
1068
1058
@@ -1082,12 +1072,12 @@ dict1=dict((['name','earth'],['port','80']))
1082
1072
1083
1073
``` python
1084
1074
dict1= {}.fromkeys((' x' ,' y' ),- 1 )
1085
- # dict={'x':-1,'y':-1}
1075
+ dict = {' x' :- 1 ,' y' :- 1 }
1086
1076
dict2= {}.fromkeys((' x' ,' y' ))
1087
- # dict2={'x':None, 'y':None}
1077
+ dict2= {' x' :None , ' y' :None }
1088
1078
```
1089
1079
1090
- ## 合并两个有序列表
1080
+ ## 8 合并两个有序列表
1091
1081
1092
1082
知乎远程面试要求编程
1093
1083
@@ -1129,7 +1119,7 @@ def loop_merge_sort(l1, l2):
1129
1119
return tmp
1130
1120
```
1131
1121
1132
- ## 交叉链表求交点
1122
+ ## 9 交叉链表求交点
1133
1123
1134
1124
去哪儿的面试,没做出来.
1135
1125
@@ -1163,7 +1153,7 @@ def node(l1, l2):
1163
1153
l2 = l2.next
1164
1154
```
1165
1155
1166
- ## 二分查找
1156
+ ## 10 二分查找
1167
1157
1168
1158
``` python
1169
1159
def binarySearch (l , t ):
@@ -1186,7 +1176,7 @@ if __name__ == '__main__':
1186
1176
print binarySearch(l, 13 )
1187
1177
```
1188
1178
1189
- ## 快排
1179
+ ## 11 快排
1190
1180
1191
1181
``` python
1192
1182
def qsort (seq ):
@@ -1203,7 +1193,7 @@ if __name__=='__main__':
1203
1193
print (qsort(seq))
1204
1194
```
1205
1195
1206
- ## 找零问题
1196
+ ## 12 找零问题
1207
1197
1208
1198
``` python
1209
1199
def coinChange (values , money , coinsUsed ):
@@ -1228,12 +1218,12 @@ if __name__ == '__main__':
1228
1218
coinChange(values, money, coinsUsed)
1229
1219
```
1230
1220
1231
- ## 广度遍历和深度遍历二叉树
1221
+ ## 13 广度遍历和深度遍历二叉树
1232
1222
1233
1223
给定一个数组,构建二叉树,并且按层次打印这个二叉树
1234
1224
1235
1225
``` python
1236
- # 二叉树节点
1226
+ # 14 二叉树节点
1237
1227
class Node (object ):
1238
1228
def __init__ (self , data , left = None , right = None ):
1239
1229
self .data = data
@@ -1242,7 +1232,7 @@ class Node(object):
1242
1232
1243
1233
tree = Node(1 , Node(3 , Node(7 , Node(0 )), Node(6 )), Node(2 , Node(5 ), Node(4 )))
1244
1234
1245
- # 层次遍历
1235
+ # 15 层次遍历
1246
1236
def lookup (root ):
1247
1237
stack = [root]
1248
1238
while stack:
@@ -1252,7 +1242,7 @@ def lookup(root):
1252
1242
stack.append(current.left)
1253
1243
if current.right:
1254
1244
stack.append(current.right)
1255
- # 深度遍历
1245
+ # 16 深度遍历
1256
1246
def deep (root ):
1257
1247
if not root:
1258
1248
return
@@ -1265,11 +1255,11 @@ if __name__ == '__main__':
1265
1255
deep(tree)
1266
1256
```
1267
1257
1268
- ## 前中后序遍历
1258
+ ## 17 前中后序遍历
1269
1259
1270
1260
深度遍历改变顺序就OK了
1271
1261
1272
- ## 求最大树深
1262
+ ## 18 求最大树深
1273
1263
1274
1264
``` python
1275
1265
def maxDepth (root ):
@@ -1278,7 +1268,7 @@ def maxDepth(root):
1278
1268
return max (maxDepth(root.left), maxDepth(root.right)) + 1
1279
1269
```
1280
1270
1281
- ## 求两棵树是否相同
1271
+ ## 19 求两棵树是否相同
1282
1272
1283
1273
``` python
1284
1274
def isSameTree (p , q ):
@@ -1290,7 +1280,7 @@ def isSameTree(p, q):
1290
1280
return False
1291
1281
```
1292
1282
1293
- ## 前序中序求后序
1283
+ ## 20 前序中序求后序
1294
1284
1295
1285
推荐: http://blog.csdn.net/hinyunsin/article/details/6315502
1296
1286
@@ -1314,7 +1304,7 @@ def deep(root):
1314
1304
print root.data
1315
1305
```
1316
1306
1317
- ## 单链表逆置
1307
+ ## 21 单链表逆置
1318
1308
1319
1309
``` python
1320
1310
class Node (object ):
0 commit comments