面试高级测试的算法题 - 全排列,二维查找

本贴最后更新于 556 天前,其中的信息可能已经沧海桑田

直接来图

QQ 图片 20201112113507.png

第三题比较简单,这里就不写了,咱们来看看前面 2 个算法题

首先第一题,题目条件没写不允许用第三方库,那么咱们可以灵活使用 python 的一个强大的迭代器库
itertools

import itertools
def sorted_(test_str):
    res = set(itertools.permutations(test_str))
    return sorted(list(map(lambda x:''.join(x), res)))

print(sorted_('zyx'))

#['xyz', 'xzy', 'yxz', 'yzx', 'zxy', 'zyx']

再来看看第二题,二维数组的查找,咱们可以用二分法

def findArray(arr, target):
    """
    二分法进行二维数组查找
    :param arr:
    :param target:
    :return:
    """
    if len(arr) == 0:
        return False
    row = 0
    col = len(arr[0])-1
    while row < len(arr) and col >= 0:
        if arr[row][col] == target:
            return True
        elif target > arr[row][col]:
            row += 1
        else:
            col -= 1
    return False

print(findArray([[1,7,12,32],[5,9,18,38],[9,13,19,41],[17,20,32,50]],50))
# True

搞定了,可能不是最优解。

个人觉得如果遇到算法题,这 2 题属于难度容易-中等之间(对于测试来说),要做到能现场手写,大家可以试试第一题不用工具库怎么实现trollface

回帖
请输入回帖内容 ...