当前位置: 首页 > article >正文

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

问题描述

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

 


http://www.kler.cn/a/507966.html

相关文章:

  • 国产编辑器EverEdit - 复制为RTF
  • 【无法下载github文件】虚拟机下ubuntu无法拉取github文件
  • 【前端】框架-构建-包管理-语言-语法-生态工具
  • Life Long Learning(李宏毅)机器学习 2023 Spring HW14 (Boss Baseline)
  • 【NLP】语言模型的发展历程 (1)
  • 【Vim Masterclass 笔记11】S06L24 + L25:Vim 文本的插入、变更、替换与连接操作同步练习(含点评课)
  • Java算法 二叉树入门 力扣简单题相同的树 翻转二叉树 判断对称二叉树 递归求二叉树的层数
  • 刷题记录 回溯算法-16:47. 全排列 II
  • 从玩具到工业控制--51单片机的跨界传奇【3】
  • NLP入门书籍《掌握NLP:从基础到大语言模型》免费下载pdf
  • MySQL的日期时间类型
  • 《汽车维修技师》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • Vue.js组件开发-实现后端返回二进制文件在浏览器自动下载
  • 基于R语言的现代贝叶斯统计学方法(贝叶斯参数估计、贝叶斯回归、贝叶斯计算实践过程
  • 如何通俗易懂的理解 html js css
  • idea 如何安装 github copilot
  • WPF实现动态四宫格布局
  • 灰度发布、金丝雀部署与蓝绿部署:软件发布的三把利剑
  • Redis | 第6章 事件与客户端《Redis设计与实现》
  • Ubuntu 部署Docker + Dify,遇到的坑, 最新亲测镜像
  • 如何在亚马逊云科技上大幅降低无服务器网页应用冷启动时间(上篇)
  • 在Mac m2系统下安装InSAR软件isce2
  • Python根据图片生成学生excel成绩表
  • [创业之路-254]:《华为数字化转型之道》-1-华为是一个由客户需求牵引、高度数字化、高度智能化、由无数个闭环流程组成的价值创造、评估、分配系统。
  • 学习微信小程序的下拉列表控件-picker
  • NC65增加按钮打开其他单据