C++/C语言判断重复数组(zznu)⭐

ops/2025/1/20 11:03:59/

问题描述

如果一个数组中不包含重复的元素,那么我们称这个数组是独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; // 如果相等,说明无重复元素,输出YESelse  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"); // 如果存在相同元素,输出NOreturn 0; // 程序结束} }printf("YES\n"); // 如果没有相同元素,输出YESreturn 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;}}}
}

 


http://www.ppmy.cn/ops/151660.html

相关文章

MySQL Workbench菜单汉化为中文

默认情况下&#xff0c;安装完成的MySQL Workbench的菜单为英文&#xff0c;今天介绍一个简单易操作的方法&#xff0c;将MySQL Workbench菜单汉化为中文。 一、查找MySQL Workbench菜单标记文件main_menu.xml 1. 默认情况下&#xff0c;MySQL Workbench的安装路径为&#xff…

手撕Diffusion系列 - 第一期 - DDPM原理

手撕Diffusion系列 - 第一期 - DDPM原理 目录 手撕Diffusion系列 - 第一期 - DDPM原理DDPM 原理DDPM 前向扩散DDPM 反向去噪DDPM 训练过程论文中训练和推理伪代码 参考 DDPM 原理 ​ DDPM包括两个过程&#xff1a;前向过程&#xff08;forward process&#xff09;和反向过程&…

【PyCharm】快捷键使用

【PyCharm】相关链接 【PyCharm】连接 Git【PyCharm】连接Jupyter Notebook【PyCharm】快捷键使用【PyCharm】远程连接Linux服务器【PyCharm】设置为中文界面 【PyCharm】快捷键使用 PyCharm 是一个功能强大且专为 Python 开发设计的集成开发环境&#xff08;IDE&#xff09…

tomcat文件目录讲解

目录的用处 bin&#xff1a;tomcat的可执行命令&#xff0c;比如&#xff1a;tomcat的启动停止命令&#xff0c;也包含其他命令以及.bat&#xff08;Windows执行的命令&#xff09;和.sh&#xff08;Linux操作系统执行的命令&#xff09;文件config:关于tomcat的配置&#xff0…

Java 特殊文件、 properties文件、xml文件

一. 属性文件.properties 1. #注释 2. 内容都是一些键值对信息&#xff0c;每行都是一个键值对&#xff1b;键不能重复&#xff1b; 3. 属性文件的后缀一般都是properties结尾 4. 使用程序读取properties属性文件里面的数据 (1) Properties&#xff1a;是一个Map集合(键值对集合…

嵌入式知识点总结(一)-C/C++关键字

针对于嵌入式软件杂乱的知识点总结起来&#xff0c;提供给读者学习复习对下述内容的强化。 目录 1.C语言宏中"#“和"##"的用法 1.1.(#)字符串化操作符 1.2.(##)符号连接操作符 2.关键字volatile有什么含意?并举出三个不同的例子? 2.1.并行设备的硬件寄存…

利用Python爬虫按图搜索1688商品(拍立淘):开启智能购物新体验

在当今这个信息爆炸的时代&#xff0c;网购已经成为人们生活中不可或缺的一部分。而1688作为国内知名的B2B电商平台&#xff0c;汇聚了海量的商品资源。然而&#xff0c;在面对众多商品时&#xff0c;我们常常会遇到这样的困扰&#xff1a;心里想着某个特定的商品样式&#xff…

前后端分离的Java快速开发平台

采用SpringBoot3.x、Shiro、MyBatis-Plus、Vue3、TypeScript、Element Plus、Vue Router、Pinia、Axios、Vite框架&#xff0c;开发的一套权限系统&#xff0c;极低门槛&#xff0c;拿来即用。设计之初&#xff0c;就非常注重安全性&#xff0c;为企业系统保驾护航&#xff0c;…