找出不能用列表中元素相加得到的最小整數

趣享Eureka發表於2020-11-01

題目

寫一個函式,找出不在列表中,且不能用列表中元素相加得到的最小整數, 如:列表[1,2,5,7],不在列表中且不能夠用列表元素相加得到的數是4


import itertools


def func(mylist):
    result = itertools.combinations(mylist, 2)  # 通過combinations()列出原列表所有組合情況
    cp_mylist = mylist.copy()  # 對原列表備份
    for i in result:
    	temp=sum(i)
        if temp not in cp_mylist:
            cp_mylist.append(temp)  # 將兩數相加的所有情況加入cp_mylist中
    cp_mylist.sort()  # 原地更新
    for j in range(len(cp_mylist) - 1):
        gap = cp_mylist[j + 1] - cp_mylist[j]  # 計算兩數的間隙
        if gap > 1:
            return cp_mylist[j] + 1  
    else:  
        return cp_mylist[-1] + 1


if __name__ == '__main__':
    mylist = [7, 1, 2, 4, 3, 5]
    # mylist = [1, 2, 5]
    res = func(mylist)
    print(res)

相關文章