面试题记录 - python面试笔试编程汇总(简单算法题)

目录

    • 简单算法题
        • 斐波那契数列
        • 判断两个有序数组中是否存在相同的数字(Python)
        • 找出一个字符串中所有回文子串(长度 >=3,长度为奇数的),并记录他的起始位置(暴力)
        • 网格路径规划问题-动态规划
        • 最好一样
        • 竞技世界笔试题:对手中的一副扑克牌进行大小排序(python)

简单算法题

斐波那契数列

  1. 递归

    def fab(n):
        # 终止条件 边界
        if n <= 2:
            return 1
        else:
            # 最优子结构 状态转移公式
            return fab(n - 1) + fab(n - 2)
    
  2. 动态规划

    def fab_2(n):
        # 由前往后推
        a = 1
        b = 1
        if n <= 2:
            print('fab({})={}'.format(n, b))
            return 1
        for i in range(n - 2):
            print(a, b)
            a, b = b, a + b
        print('fab({})={}'.format(n, b))
        return b
    

判断两个有序数组中是否存在相同的数字(Python)

初始化两个下标,分别从两个数组的第一个元素开始,比较当前两个元素的大小,将较小元素的下标加一,如果有相同的数字,则返回True,如果直到数组末尾还没有相同的数字出现,则返回False。O(2n)

def findSameNum(a,b):
	i = j = 0
	while i <= len(a) and j <= len(b):
		if a[i] == b[j]
			return True
		elif a[i] > b[j]:
			j += 1
		else:
			i+=1
	return False 	 

找出一个字符串中所有回文子串(长度 >=3,长度为奇数的),并记录他的起始位置(暴力)

不会

网格路径规划问题-动态规划

有一个二维数组,row=2,col=n(要求输入),"." 表示可以走,“X” 表示障碍物,问从左上角走到右下角有多少条路。方式:只能→,↗,↘

最好一样

给一组数,和一个正整数x,找数组里面最大重复个数,只能进行一个运算,与x进行按位或运算

竞技世界笔试题:对手中的一副扑克牌进行大小排序(python)

4种花色分别用其大写英文首字母表示: S:Spades,H:Heart,C:Club,D:Dimond
eg.梅花3表示为C3
参考

返回主目录

你可能感兴趣的:(python,面试/笔试)