Py学习  »  Python

Python面试题,考验你能力的时候到了!

python • 6 年前 • 541 次点击  

面试题1 数字在排序数组中出现的次数

思路: 使用二分法分别找到数组中第一个和最后一个出现的值的坐标,然后相减

面试题2二叉树的深度

思路: 分别递归的求左右子树的深度

面试题3 数组中只出现一次的数字

要求:数组中除了两个只出现一次的数字外,其他数字都出现了两遍

思路: 按位异或,在得到的值中找到二进制最后一个1,然后把数组按照该位是0还是1分为两组

面试题4 和为s的两个数字VS和为s的连续正数序列和为s的两个数字

要求:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使其和为s

思路: 设置头尾两个指针,和大于s,尾指针减小,否砸头指针增加

和为s的连续整数序列

要求:输入一个正数s, 打印出所有和为s的正整数序列(至少两个数)

思路: 使用两个指针,和比s小,大指针后移,比s大,小指针后移

面试题5 翻转单词顺序与左旋转字符串

翻转单词顺序

要求:翻转一个英文句子中的单词顺序,标点和普通字符一样处理

思路: Python中字符串是不可变对象,不能用书中的方法,可以直接转化成列表然后转回去

左旋转字符串

思路: 把字符串的前面的若干位移到字符串的后面

面试题6 n个骰子的点数

要求:求出n个骰子朝上一面之和s所有可能值出现的概率

思路:n出现的可能是前面n-1到n-6出现可能的和,设置两个数组,分别保存每一轮

面试题7 扑克牌的顺子

要求:从扑克牌中随机抽取5张牌,判断是不是顺子,大小王可以当任意值

思路: 使用排序

面试题8 圆圈中最后剩下的数字

要求:0到n-1排成一圈,从0开始每次数m个数删除,求最后剩余的数

思路:当 n > 1 时: f(n,m) = [f(n-1, m)+m]%n,当 n = 1 时: f(n,m)=0,关键是推导出关系表达式

面试题9 求1+2...+n

要求:不能使用乘除、for、while、if、else等

方法一:使用range和sum

方法二:使用reduce

面试题10 不用加减乘除做加法

要求:不用加减乘除做加法

方法一:使用位运算,Python中大整数会自动处理,因此对carry需要加个判断

方法二:使用sum

面试题11 把字符串转化成整数

要求:把字符串转化成整数

测试用例:正负数和0,空字符,包含其他字符

备注:使用raise抛出异常作为非法提示

面试题12 树中两个结点的最低公共祖先

要求:求普通二叉树中两个结点的最低公共祖先

方法一:先求出两个结点到根结点的路径,然后从路径中找出最后一个公共结点

备注:文件fifty.py中包含该代码的具体测试数据



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/zOcR6Qax5K
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/4283
 
541 次点击