首页 > 其他分享 >存在重复元素

存在重复元素

时间:2024-04-27 13:22:05浏览次数:20  
标签:插入 存在 set return cout nums 重复 元素 int

 

 

解法一:使用老师上课说的排序,然后遍历。使用快速排序时间复杂度是O(nlogn)(这个是快排的时间复杂度)+O(n)(遍历的时间复杂度)=======O(nlogn)

 #include <bits/stdc++.h>

using namespace std;

bool containsDuplicate(vector<int> &nums) {

   sort(nums.begin(), nums.end());

   for (int i = 0; i < nums.size(); i++) {

      if (nums[i + 1] == nums[i]) {

          return true; }  }

   return false;

}

int main() {

   int n;cin >> n;vector<int>nums;

   for (int i = 0; i < n; i++) {

      int x; cin >> x; nums.push_back(x);  }

   if (containsDuplicate(nums))   cout << "true";

   else  cout << "false";

   return 0;

}

解法二:

使用数据结构set,set是集合,然后不能有重复的元素的一种数据结构

因此流程就是在最开始向set里添加元素的时候就直接可以看到是否有重复元素。

因为set.insert(x)插入的返回值,其第一个first的值是插入的x,其第二个值second是这个x是否插入的代表值,1代表插入成功,0代表插入失败。也就是0代表有重复元素。

#include <bits/stdc++.h>

using namespace std;

bool containsDuplicate(vector<int> &nums) {

   set<int> se;

   for (auto item : nums) {

      if (!se.insert(item).second) { // 检查插入是否成功

          return true; }  }

   return false;

}

int main() {

   int n;cin >> n;vector<int>nums;

   for (int i = 0; i < n; i++) {

      int x;cin >> x;nums.push_back(x); }

   if (containsDuplicate(nums))

      cout << "true";

   else

      cout << "false";

   return 0;

}

 

标签:插入,存在,set,return,cout,nums,重复,元素,int
From: https://www.cnblogs.com/FJCLJ/p/18161950

相关文章

  • c# Log 日志 以及不打印重复Log
    publicstaticclassLogHelp{privatestaticreadonlyILoglogger;privatestaticreadonlylog4net.ILogLInfo=log4net.LogManager.GetLogger("LogInfo");privatestaticreadonlylog4net.ILogLError=log4net.LogMan......
  • 微服务想缓存一些数据,不希望重复调用。java SoftReference软引用存储缓存
    背景:微服务我们要调用字典数据,但是很多都是要重复调用的,没有缓存,我为了设置一个应用的缓存,并且可以定时清理,更新 首先定义两个静态数据,。一个软连接缓存,一个定时清理线程privatestaticSoftReference<Map<String,Map<String,DictionaryVo>>>plmDicMapCache=newSoftR......
  • 无重复字符的最长子串
    给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。示例1:输入:s="abcabcbb"输出:3解释:因为无重复字符的最长子串是"abc",所以其长度为3。示例2:输入:s="bbbbb"输出:1解释:因为无重复字符的最长子串是"b",所以其长度为1。示例3:输入:s......
  • 数据结构(顺序栈元素的增删改查)
    /***********************************************************************************************************该程序实现顺序栈元素的增删改查,目的是提高设计程序的逻辑思维,另外为了提高可移植性,所以顺序栈中元素的*数据类型为DataType_t,用户可以根据实际情况修改顺序......
  • mountvol命令是Windows操作系统中的一个命令行工具,用于管理卷挂载点和卷名称。通过mou
    mountvol|MicrosoftLearnmountvol命令是Windows操作系统中的一个命令行工具,用于管理卷挂载点和卷名称。通过mountvol命令,用户可以查看当前系统中的卷挂载点信息、创建新的卷挂载点、删除已存在的卷挂载点等操作。具体来说,mountvol命令的主要功能包括:列出卷挂载点:通过......
  • threejs 父元素 相对位置 position 网格对象
    设置position都是相对于父元素的位置设置的//导入threejsimport*asTHREEfrom"three";import{OrbitControls}from"three/examples/jsm/controls/OrbitControls.js";//创建场景sceneconstscene=newTHREE.Scene();//console.log(scene,'scene'......
  • JavaScript元素
    JavaScript元素一.常量常量也称之为“字面量”,是固定值,不可改变。看见什么,它就是什么。常量有下面这几种:数字常量(数值常量)字符串常量布尔常量自定义常量1.1数字常量数字常量非常简单,直接写数字就行,不需要任何其他的符号。既可以是整数,也可以是浮点数。consol......
  • 力扣-442. 数组中重复的数据
    1.题目介绍题目地址(442.数组中重复的数据-力扣(LeetCode))https://leetcode.cn/problems/find-all-duplicates-in-an-array/题目描述给你一个长度为n的整数数组nums,其中nums的所有整数都在范围[1,n]内,且每个整数出现一次或两次。请你找出所有出现两次的整数,......
  • 记录MySQL分页数据重复问题
    1、准备数据2、sql查询1、查询第一页的结果select*fromtestlimit0,3;2、查询第二页的结果select*fromtestlimit1,3;3、查询第三页的结果select*fromtestlimit2,3;3、结果由上图所示,每次分页都有重复数产生4、原因我们知道orderby排序的时......
  • 推荐一个使用 HardLink 硬链接减少重复文件占用磁盘空间的工具
    在NTFS文件系统里面,咱可以使用HardLink硬链接的方式,将多个重复的文件链接到磁盘的同一份记录里面,从而减少在磁盘里面对重复文件存储多份记录,减少磁盘空间的占用。本文将和大家推荐我所做的基于HardLink硬链接减少重复文件占用磁盘空间的工具此工具名为UsingHardLinkToZipN......