问题描述
如果一个数组中不包含重复的元素,那么我们称这个数组是独ONE无TWO的数组。给定一个数组,请你判断这个数组是否是独ONE无TWO的。
输入
首先输入一个正整数n表示数组的长度(0<n<100)。
接下来输入n个整数(均在int范围内),表示数组中的n个元素。输出
如果数组中不包含重复的元素,输出“YES”,否则输出“NO”。输出单独占一行。
样例
输入
4
1 2 3 1
输出
NO
输入
8
1 4 5 6 7 2 8 0
输出
YES
C++代码:(运用C++集合特性)
思路:通过将输入的整数存入集合中,利用集合元素的唯一性来判断是否存在重复元素,若集合大小与输入整数个数相同则无重复,输出“YES”,否则输出“NO”。
#include<bits/stdc++.h> // 包含常用的头文件
using i68 = long long; // 定义别名,但在此代码中未使用
using namespace std;
// 定义宏,用于获取容器的大小
#define sz(x) (int)x.size()
// 定义宏,用于获取容器的迭代器范围
#define all(v) v.begin(), v.end()
/*
%%%%%%%%%%%%%%
/\_/\ /\_/\
(* . *)(+ . +)
> # < > $ <
%%%%%%%%%%%%%%
*/
// 定义解决函数
void solve()
{
int n, mid; // n为输入的整数个数,mid用于临时存储输入的整数
cin >> n; // 输入整数个数
set<int> se; // 创建一个整数集合,用于存储输入的整数
for (int i = 0; i < n; i++) // 循环n次
{
cin >> mid; // 输入一个整数
se.insert(mid); // 将整数插入集合中,集合会自动去重
}
// 判断集合的大小是否等于输入的整数个数
if (sz(se) == n)
cout << "YES" << endl; // 如果相等,说明无重复元素,输出YES
else
cout << "NO" << endl; // 如果不相等,说明有重复元素,输出NO
}
// 主函数
int main()
{
ios::sync_with_stdio(false); // 解耦cin和scanf,加快输入速度
cin.tie(nullptr); // 解绑cin和cout,加快输出速度
int T = 1; // 测试用例个数,此处固定为1
// cin >> T; // 如果需要多组测试用例,可以取消注释此行
while (T--) // 循环T次
{
solve(); // 调用解决函数
}
return 0; // 程序正常结束
}
C语言代码
思路:先通过冒泡排序对输入数组进行排序,再遍历排序后的数组检查是否存在相邻重复元素,若存在则输出“NO”,否则输出“YES”。
#include <stdio.h> // 包含标准输入输出库
#include<string.h> // 包含字符串处理库,但在此代码中未使用
#include<stdlib.h> // 包含标准库,但在此代码中未使用
// 声明冒泡排序函数,用于对数组进行排序
void bubble(int arr[],int n);
/*
%%%%%%%%%%%%%%
/\_/\ /\_/\ // 作者添加的装饰性图案
(* . *)(+ . +)
> # < > $ < // 作者添加的装饰性图案
%%%%%%%%%%%%%%
*/
// 主函数
int main() {
int n; // 定义数组长度变量
scanf("%d",&n); // 输入数组长度
int arr[n]; // 根据输入长度定义数组
// 循环读取数组元素
for(int i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
// 调用冒泡排序函数对数组进行排序
bubble(arr,n);
// 循环检查数组中是否存在相邻的相同元素
for(int i=0;i<n-1;i++)
{
if(arr[i]==arr[i+1])
{
printf("NO\n"); // 如果存在相同元素,输出NO
return 0; // 程序结束
}
}
printf("YES\n"); // 如果没有相同元素,输出YES
return 0; // 程序正常结束
}
// 冒泡排序函数实现
void bubble(int arr[],int n)
{
// 外层循环控制排序的轮数
for(int i=n-1;i>0;i--)
{
// 内层循环进行相邻元素的比较和交换
for(int j=0;j<i;j++)
{
// 如果当前元素大于相邻的下一个元素,则交换
if(arr[j]>arr[j+1])
{
int mid=arr[j]; // 临时变量用于交换
arr[j]=arr[j+1];
arr[j+1]=mid;
}
}
}
}