2021秋招阿里巴巴 笔试 7.22

2021秋招阿里巴巴 笔试 7.22

  • 笔试细节:github:https://github.com/willyzw1221/alibaba2021
    • 第一题:给一个n<=10,按字典序输出1...n,相邻数字绝对值不为1,的排列。

笔试细节:github:https://github.com/willyzw1221/alibaba2021

第一题:给一个n<=10,按字典序输出1…n,相邻数字绝对值不为1,的排列。

// An highlighted block
输入:
4
输出:
2 4 1 3
3 1 4 2
// 回溯法1
def dfs(nums,temp):
    if not nums:
        res.append(temp)
        return True
    for i in range(len(nums)):
        if not temp or abs(temp[-1]-nums[i]) >1:
            dfs(nums[:i]+nums[1+i:],temp+[nums[i]])

res=[]
nums=list(range(1,10))
dfs(nums,[])
print(res)
// 回溯法2
def dfs(nums):
    res=[]
    if len(nums)==1: return [[nums[0]]]
    for i in range (len(nums)):
        for j in dfs(nums[:i]+nums[i+1:]):
            if abs(j[0]-nums[i])>=2:
                res.append([nums[i]]+j)
    return res
nums=[1,2,3,4]
a=dfs(nums)
print(a)

你可能感兴趣的:(2021秋招阿里巴巴 笔试 7.22)