leetcode做题笔记217. 存在重复元素

给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false

示例 1:

复制代码
输入:nums = [1,2,3,1]
输出:true

示例 2:

复制代码
输入:nums = [1,2,3,4]
输出:false

示例 3:

复制代码
输入:nums = [1,1,1,3,3,4,3,2,4,2]
输出:true

思路一:集合

c++解法

cpp 复制代码
class Solution
{
public:
    bool containsDuplicate(vector<int> &nums)
    {
        return (std::set<int>(nums.begin(), nums.end()).size() != nums.size());
    }
};

分析:

直接用集合将重复数字剔除,最后比较两个数组之间的长度,若不等则返回false

思路二:排序后遍历

c++解法

cpp 复制代码
class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        for(int i = 0;i < nums.size() - 1;i++)
            if(nums[i] == nums[i+1]) return true;
        return false;
    }
};

分析:

将数组排序后只需查看相邻的两个数是否相等即可判断,时间复杂度为O(nlogn)

总结:

本题考察对排序,集合的应用,利用相关性质即可解决

相关推荐
yuxb731 小时前
Zabbix企业级分布式监控系统(上)
笔记·学习·zabbix
现在,此刻1 小时前
李沐深度学习笔记D1-什么是深度学习
人工智能·笔记·深度学习
墨染点香2 小时前
LeetCode 刷题【144. 二叉树的前序遍历】
数据结构·算法·leetcode
猿来是你_L3 小时前
UGUI笔记——3D坐标转换成UGUI坐标
笔记·3d
cynicme6 小时前
力扣3318——计算子数组的 x-sum I(偷懒版)
java·算法·leetcode
崎岖Qiu7 小时前
【设计模式笔记17】:单例模式1-模式分析
java·笔记·单例模式·设计模式
lkbhua莱克瓦249 小时前
Java练习-正则表达式 1
java·笔记·正则表达式·github
Larry_Yanan9 小时前
QML学习笔记(五十)QML与C++交互:QML中单例C++对象
开发语言·c++·笔记·qt·学习·ui·交互
im_AMBER9 小时前
算法笔记 09
c语言·数据结构·c++·笔记·学习·算法·排序算法
凯芸呢9 小时前
Java中的数组(续)
java·开发语言·数据结构·算法·青少年编程·排序算法·idea