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

server/2025/1/19 6:01:48/

问题描述

如果一个数组中不包含重复的元素,那么我们称这个数组是独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/server/159557.html

相关文章

vue前端搭建企业级项目

一、技术选型和项目研讨会 PnpmVite Vue3 JavaScript Vue Router Ant Design Vue ESLint Stylelint Prettier pnpm 包管理工具 Vite 下一代前端开发与构建工具 快速 轻量级 按需编译 热更新 Vue3 市场主流的开发框架 Composition API JavaScript 前端3剑客之一&am…

非安全函数

在C中&#xff0c;非安全函数通常是指那些在使用时容易引发安全问题&#xff08;如缓冲区溢出等&#xff09;的函数。以下是一些常见的非安全函数&#xff1a; 字符串处理函数 strcpy()&#xff1a;用于复制字符串。如果目标字符串空间不足&#xff0c;会导致缓冲区溢出。例如…

纯 Python、Django、FastAPI、Flask、Pyramid、Jupyter、dbt 解析和差异分析

一、纯 Python 1.1 基础概念 Python 是一种高级、通用、解释型的编程语言&#xff0c;以其简洁易读的语法和丰富的标准库而闻名。“纯 Python” 在这里指的是不依赖特定的 Web 框架或数据分析工具&#xff0c;仅使用 Python 原生的功能和标准库来开发应用程序或执行任务。 1.…

Azure Synapse Dedicated SQL Pool执行计划的步骤对应于查询优化器执行给定SQL查询的部分和优化策略

通过仔细查看和优化执行计划和基础数据库架构&#xff0c;可以显著提高Azure Synapse Dedicated SQL Pool中的查询性能。SQL语句的每个部分都对应执行计划中的具体步骤。 执行计划中的步骤和对应的SQL查询部分&#xff1a; 扫描操作&#xff1a; SQL 语句&#xff1a;** FROM …

高通8255 Android STR 启动失败要因分析调查

目录 背景&#xff1a; 调查过程&#xff1a; 步骤1&#xff1a; slog2info | grep vmm_service 步骤2&#xff1a; slog2info | grep qvm 总结&#xff1a; 解决方案 背景&#xff1a; 调试高通8255 STR的STR过程中发现Android和QNX进入STR状态后&#xff0c;脱出STR时…

Spring6.0新特性-HTTP接口:使用@HttpExchange实现更优雅的Http客户端

文章目录 一、概述二、使用1、创建接口HttpExchange方法2、创建一个在调用方法时执行请求的代理3、方法参数4、返回值5、错误处理&#xff08;1&#xff09;为RestClient&#xff08;2&#xff09;为WebClient&#xff08;3&#xff09;为RestTemplate 注意 一、概述 官方文档…

ThreeJs功能演示——几何体操作导入导出

1、内部创建几何体导出编辑能力 1&#xff09;支持内部创建的面、正方体、球体 内部创建物体时&#xff0c;如果是三维物体&#xff0c;要创建集合形状geometry&#xff0c;和对应的材质material。再一起创建一个三维物体。 // 存储创建的几何体列表const geometries [];cre…

使用Selenium进行网页自动化测试

# 导入Selenium的webdriver from selenium import webdriver from selenium.webdriver.common.keys import Keys import time # 创建WebDriver对象&#xff0c;指定使用Chrome浏览器和浏览器驱动的路径 driver webdriver.Chrome(executable_path/path/to/chromedriver) # …