HJ131 数独数组

知识点模拟

描述

对于给定的由 nn 个整数组成的数组 {a1,a2,...,an}{a1​,a2​,...,an​},我们称其为数独数组,当且仅当其每一个长度为 99 的连续子数组,都包含 1∼91∼9 这 99 个数字。

现在,对于给定的数组,是否存在一种方案,使得其经过重新排序后成为数独数组?如果是,直接输出 YESYES;否则,输出 NONO。注意,您不必给出具体的排序方案。

输入描述:

第一行输入一个整数 n(9≦n≦105)n(9≦n≦105) 代表数组中的元素数量。

第二行输入 nn 个整数 a1,a2,...,an(1≦ai≦9)a1​,a2​,...,an​(1≦ai​≦9) 代表数组元素。

输出描述:

如果数组在重新排序后可以成为数独数组,输出 YESYES;否则,输出 NONO。

示例1

输入:

复制代码
9
1 2 3 4 5 6 7 9 8

复制输出:

复制代码
YES

复制说明:

复制代码
在这个样例中,不需要经过重新排序,数组已经是一个数独数组。

示例2

输入:

复制代码
9
1 2 3 4 5 6 7 8 1

复制输出:

复制代码
NO
cpp 复制代码
//  #牛客春招刷题训练营# https://www.nowcoder.com/discuss/726480854079250432
#include <algorithm>
#include <array>
#include <iostream>
using namespace std;

int main() {
  ios_base::sync_with_stdio(false);cin.tie(0),cout.tie(0);
  int x, n;
  array<int, 9> a{0};
  cin >> n;
  for (int i = 0; i < n; i++){
    cin >> x;
    a[x - 1]++;//---------计数,计算每个数字出现的次数
  }
  sort(a.begin(), a.end());
  if (a[8] - a[0] > 1)//--------如果出现次数最多的数字的出现次数 - 出现次数最少的数字的出现次数 > 1;就不能实现,否则只需将多出来的部分放在最前面就好了
    cout << "NO";
  else cout << "YES";
}
// 64 位输出请用 printf("%lld")
相关推荐
明月_清风1 小时前
从二叉树到 B+ 树:一文搞懂工程中「树」的演化之道
数据结构·算法·go
渡我白衣1 小时前
并查集:基础认识与模拟实现
android·java·javascript·数据结构·c++·算法·并查集
如意猴1 小时前
【C++】001--C++入门(1)
开发语言·c++
hetao17338371 小时前
2026-09-01~09-04 hetao1733837 的刷题记录
c++·算法
Evand J1 小时前
【MATLAB例程,图像滤波5】 反谐波均值滑动窗口滤波(CHMF)图像降噪与质量评价,附代码下载链接
图像处理·算法·计算机视觉·matlab·均值算法·滑动窗口滤波·均值滑动
血小板要健康2 小时前
链表 阶段算法总结
java·数据结构·笔记·算法·leetcode·链表
a187927218312 小时前
【算法】回溯算法(三):三记重锤与 N 皇后——记忆化、状态设计与三层漏斗
算法·leetcode·go·剪枝·回溯·n皇后·算法讲解
HugoStudio_SWAN4 小时前
洛谷 P1420 / P1179 / B4262 最长连号、数字统计与词频统计——统计的三种面孔
c++·学习·程序人生·算法
青 春 记 忆5 小时前
LeetCode 350. 两个数组的交集 II|Python 解法详解
python·算法·leetcode
raindayinrain5 小时前
c++并发
c++