华为机试【22、数字涂色】

22、题目:数字涂色
【数字图色】疫情过后,希望小学终于又重新开学了,三年二班开学第一天的任务是将后面的黑板报重新制作。黑板上已经写了N个正整数,同学们需要给这每个数分别上一种颜色。为了让黑板报既美观又有学习意义,老师要求同种颜色的所有数都可以被这种颜色中最小的那个数整除。现在请你帮帮小朋友们,算算至少需要多少种颜色才能给这N个数进行上色。
输入描述:
第一行有一个正整数N,其中1<=N<=100。
第二行有个N个int型整数(保证输入数据在[1,100]范围内),表示黑板上各个正整数的值。
输出描述:
输出只有一个整数,为最少需要的颜色种数。
示例1:
输入
3
2 4 6
输出
1

def paint_nums(s):
    """
    每次遍历所有元素,并移除所有能被第一个元素整除的元素
    :param s:
    :return:
    """
    arr = [int(x) for x in s.split(" ")]
    arr.sort()
    l = len(arr)
    i = 0
    start = arr[0]
    color = 1
    while arr:
        if i > l - 1:
            i = 0
            color += 1  # 每轮遍历完,颜色加一
            start = arr[i]
        elif arr[i] % start == 0:
            arr.pop(i)
            l -= 1
        else:
            i += 1
    return color


print(paint_nums("2 5 4 7 6"))
全部评论
这个题在哪里可以在线练习呢,就是想知道自己的解法是否完美
点赞 回复
分享
发布于 2022-07-31 16:24

相关推荐

5 6 评论
分享
牛客网
牛客企业服务