python面试100讲(51-82)

'''
83.
1.可以用2*1的小矩形横着或竖着去覆盖更大的矩形。
请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,
总共有多少种覆盖方法?请用递归的方式实现
2.请用非递归的方式实现第1题

总结:
本算法考察的斐波那契数列的应用,同时使用了递归和非递归的方式实现了这个算法

84.
1.有一个整数类型的列表nums,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。
案例:
data=[1,2,-2,-1,5,-4]
输出20,子序列:[-1,5,-4]

总结:
mul(i,j) = mul(0,j)/mul(0,i)从数组i到j的累积等于从数组开头到j的累乘除以从数组开头到i的累乘。

1.累乘的积等于0,就要重新开始
2.累乘的积小于0,要找到前面最大的负数,这样才能保住从i到j最大
3.累乘的成绩大于0,要找到前面最小的正数,这样才能保住从i到j最大

85.
1.将一个整数转换为二进制形式,统计二进制数中1的个数,如果是负数,按补码统计1的个数。

总结:
算法的基本思路就是分别获得二进制的某一位,其他位都设置为0,如果结果是非0,那么说明这一位是1,
count就加1,否则count不变。

86.
1.有一个单向链表,请编写一个函数,将这个单向链表反转,并返回反转后的头节点

87.
1.有一个整数型列表,判断该列表是否为对应二叉搜索树的后续遍历结果

总结:
关键点是了解什么是搜索二叉树
二叉搜索树左子树上所有的结点均小于根结点、右子树所有的结点均大于根结点。

88.
1.有一个数字列表,要找出列表中出现次数超过列表长度一半的数字,如果有2个或2个以上数字
出现的次数都超过了列表长度的一半,找出第1个满足条件的数字即可,如果列表元素个数是奇数,
列表元素个数的一半取整数部分(四舍五入)。
例如:长度为21的列表的一半取11。

总结:
算法的关键就是扫描整个列表,将每一个数字出现的总次数保存到字典中,
用数字本身作为key。知道第一个满足条件的数字出现。

89.
1.只包含2、3、5中的一个或多个因子的数称为丑数,要求按从小到大的顺序找到第n个丑数

90.让小朋友们围成一个大圈。然后,随机指定一个数m,让编号为0的小朋友开始报数。
每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且
不再回到圈中,从她的下一个小朋友开始,继续0...m-1报数...这样下去...直到
剩下最后一个小朋友,可以不用表演

91.滑动窗口的最大值
1.

92.得到整数列表的中位数

93.删除链表中重复的节点

总结:

94.二叉搜索树的第k个节点

95.字符串循环左移k位

96.整数区间中1出现的次数

97.二叉树中和为某一值得路径

98.青蛙跳台阶

99.用递归的方法绘制带绿叶的...

100.绘制谢尔宾斯基三角形

'''

你可能感兴趣的:(csdn笔记)