题解 | 数独数组

数独数组

https://www.nowcoder.com/practice/12e6adfa05f5417dbf5a0d85ff5fb93c

# 解题思路:容易知道n为9的整数倍时,设倍数为x,则必须满足1~9每个数字的个数都是x个
# 若n=9*x+y,即多出y个多余的位置,则这多余的y个数不能重复
# 因为可随意调整顺序,保证前面x组1~9的前y个数和最后多出来的y个数顺序一致即可满足要求
# //代码思路:设数组num[9],每个下标正好对应一个数,统计每个数字出现的个数
# 计算n/9和n%9,数组num整体减去n/9,循环判断数组元素是否大于0
# 有小于0的元素说明该元素个数不足返回NO,都大于0则统计剩余1的个数,若等于n%9,则打印YES,否则NO
from collections import Counter

while True:
    try:
        n = int(input())
        a = input().split()
        x,y=divmod(n,9)
        dict_a = {}
        for num in range(1, 10):  # 统计每个数字出现的个数
            dict_a[str(num)] = a.count(str(num))
        operate_a = [i - x for i in dict_a.values()]
        if min(operate_a) < 0:  # 有小于0的元素说明该元素个数不足
            print("NO")
        elif min(operate_a) == max(operate_a):  # 包含n倍的1~9的数
            print("YES")
        else:
            if operate_a.count(1) == y and operate_a.count(0)==9-y:
                print("YES")
            else:
                print("NO")

    except:
        break

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-08 10:39
一个证都没&nbsp;我能填什么
程序员小白条:别人有,你为什么没有,还是这个道理,社会就是比较,竞争,淘汰,你要安逸,那么就要做好淘汰的准备
点赞 评论 收藏
分享
强大的马里奥:不太可能,我校计算机硕士就业率99%
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务